That's a valid sentiment. The problem is that freedom from such issues is very rare in general-purpose computing. Certainly on x86 it's always an issue (EDIT: except on very specialized OSes, I suppose), as it is on J2ME (and I'd guess Symbian). Dedicated game consoles are pretty much the only place I can think of where your application will always run on absolutely known hardware.
I agree, both as a user and as a programmer, that the mess with Android 1.6 sticking around for essentially political reasons needs to improve fast. Minimal specs are nice, although they will necessarily change as the time progresses, and you will have to make a cut-off yourself. Support only Android phones released in the past two years (as an example, obviously not a useful guideline right now) and you will know what your lowest common denominator is.
On the other hand, even Apple's halcyon days of single-device uniformity are coming to an end. You now have two resolutions in iPhone OS to deal with, and if rumours are true, you'll have a third one in June (though that one's less of an issue since doubling should work acceptably). OSes 3.2 and 4.0 force you to consider both hardware and software keyboards. The iPhone 3G has less RAM available to an app than the 3GS and the iPad. CPU speeds are different on every release and I believe graphics performance differs too. New hardware features have been introduced that you have to check for. Between June and November-ish, you'll have to support 3.2 for iPad and 4.0 for iPhone (and 3.0 for older iPhones, if you even want to).