Something for you to try if the regular stories about Android phones that can’t be upgraded seem befuddling or ponderous: don’t think of Android as an operating system the way you think of Mac OS X, iOS, or Windows as an operating system.
Instead, think of it the way you think of your car’s engine.
Generally speaking, the Android-phone you’ve purchased is married to the version of Android it shipped with, just like your car is more or less married to its engine, which has been customized to some degree just for your car. If a better engine is developed and you want it in your old car, it’ll take a lot of work to make that happen, and most people won’t (and likely shouldn’t) try doing it themselves.
The companies shipping Android phones are just like the automobile manufacturers in this regard. They start with an Android base, customize it for the smartphone they’ve made, and send it out the door. It does the specific things they’ve determined it should do in the specific way they’ve decided it should do them, and that’s it. If there’s a problem they can’t get around fixing (Pinto), they reluctantly push an update (recall).
The idea that you might later want to update the OS sometime down the road isn’t the kind of thing that concerns them. Nobody should be surprised about this and in fact, it makes good business sense for the carriers and Android phone manufacturers. What better way to encourage you to buy a new phone than to make your old one obsolete (at least from the software perspective) after only several months?
You could argue that Apple does this too but there is a difference: we can still run the latest version of iOS on all of the iPhones currently sold by Apple, which includes the three-year old iPhone 3Gs.