The cheapest option is Google Voice + an ATA (I recommend ObiTalk; they've specially designed the software to make setting it up with Google Voice easy). Once you buy the device, it's $0/month (yes, free) unless you make international calls.
IPDaley will shortly chime in saying not to get it because it doesn't have 911 and the quality/reliability isn't high enough, but it works fine for me.
If 911 is important to you, I still recommend an ObiTalk, but you use it with a third-party VoIP provider (instead of Google Voice) for 911 support.
What I actually do is a combination of both. My ObiTalk supports two phone lines, and my wife and I each have a Google Voice acount. For mine, I set the ObiTalk's primary line to connect to a third-party VoIP provider (I chose PhonePower; $34.99/year), then set my Google Voice account to forward to that third-party account. For my wife's, I set the ObiTalk's secondary line to connect directly to her Google Voice account. That way, dialing out happens (by default) through the third-party VoIP provider, so we get 911 support, and we still get the visual voicemail, fancy features, and Android Hangouts integration that Google Voice offers.
I'm considering dropping the PhonePower part before it renews next month, and just using cellphones for 911.
FYI, I've heard nothing but bad things about MagicJack.