1) Grasshopper
2) Google Voice (although you can't port your number I don't think)
3) Vonage
All of these have an app you can install on your phone and as long as you had a WiFi you could use the app. Grasshopper doesn't have a desktop app that I am aware of though which locks you to using an Android/iPhone device for calls.