I'd rather have a smartphone with the option to block all 3G/EDGE traffic at the phone level, relying on wi-fi except in emergencies. I've been waiting since the Treo 600 was hot news. Its retail launch was in mid 2003, so
... eight years or so?
It's not an option out of the box, but you can accomplish this with software on Android devices. They work by changing the "APN" to invalid values - e.g. "APNdroid" as a simple toggle or "JuiceDefender" to do it based on a schedule.
Technically you could on iPhone, too, (same general process) but I'm not sure if you can do it on the fly (a profile which changes the configuration will accomplish disabling data).
The problem is getting a carrier which doesn't require you pay for "unlimited" data. Android has an advantage there since it's easier to buy an Android phone that's entirely unlocked and then bring it to a GSM provider without the provider knowing what you are using.