Apple limits aside, Google Voice is an amazing service that tops anything the four major U.S. mobile phone carriers have to offer. Combined.
Switching to GV means being able to change phones and/or carriers on your schedule and as your needs change. Granted, you won't be eligible for a subsidy on your next shiny new toy, but you also won't be making a $2,000 - $3,000, long-term commitment either.
Taking the carrier subsidy on a new phone is like getting a toaster for moving your direct deposit account to a new bank. Or like getting a beach towel for signing up for a new credit card. (You know that they secretly laugh at you when you do this, right?)
It's much better to pay full fare for your next phone (or even better, opt for a used one on eBay) and decide for yourself how to best put it to work.
Unfortunately, Apple has made is needlessly hard to use Google Voice on an iPhone. While it can be done, it's half-baked: you have to avoid the iOS dialer and make all calls through the Google Voice app -- if you want your proper caller ID to show up.
iOS users have to jump through an extra hoop and Danny Sullivan notes that it's slow and messes up Voice Control and Bluetooth dialing:
I often find this means 15 seconds or more of delay until the app fully loads, which is a pain. It also means that if you’re using things like voice dialing or calling from a car’s Bluetooth phone integration, your call will go through on your real number, not your Google Voice number.
If you're an iPhone user and would like to have deeper Google Voice integration, you should let Apple know and hope that Apple comes to its senses.
If you're locked in a carrier-contract (as most Americans are) I recommend that follow these steps to mobile freedom:
Put a reminder in you calendar on the date that your carrier contract expires
When the magic day comes, port your number to GV
Get a phone of your choosing
Get a contract-free, monthly plan on the carrier of your choosing
Point your GV number at said phone
never look back
If you're lucky iOS will support native GV dialing by then.
If all this sounds like too much trouble, take five minutes and set up a Google Voice number and save it for a rainy day.