I did a lot of research into this a couple of months ago before I ditched my carrier.
There are plenty of free VoIP apps out there, but I wasn't impressed. You can use them to call out, but no one can call you unless they use the same app. That's just not practical.
There's Skype, but it's geared mainly towards using it with other people that have Skype. Again, that's not always practical.
In the end, Line2 was the one app that felt the most like a real phone. For $10 a month you get your own phone number, unlimited calling and texting in US & Canada, voicemail by email, caller ID, call waiting, call forwarding, etc... I've been using it for 3 months, and don't have anything negative to say. I highly recommend it.