As for the upcoming iOS 7: it will run on almost all the devices that can run iOS 6 (except iPhone 3GS and iPod touch 4th gen). That means Apple is actually extending the period during which devices receive major updates.
Assuming iOS 7 will be released on September 20[1] and iOS 8 will be released a year from then, that means iPhone 4 will be able to run the latest OS version for 4 years and 3 months (I’m also assuming iPhone 4 won’t be able to run iOS 8).
[1] http://www.cultofmac.com/232580/when-will-the-next-ios-7-bet...
Right. My point is that another way to look at it is that an iPhone 4 bought in August 2013 on a two-year contract will probably stop getting OS updates while it is still under contract.
But your point is valid, and it’s why I wouldn’t recommend anyone to buy the current entry level iPhone (iPhone 4). I’m hoping Apple will change their strategy of discounting older iPhone models and create a separate entry level iPhone. That model should not compromise RAM and CPU so that it will be able to keep up with future OS releases, but it could compromise in other areas such as screen size, battery size, and choice of materials.
It's an interesting side effect of Apple selling old hardware as a new lower cost option for several years. Apple isn't being altruistic or noble by supporting those devices... they are giving normal support for a device that someone can still buy new with a two-year contract.
Once Apple actually retires a product, like the iPad 1, it stops getting updates pretty quickly.