That has to do with your carrier and the particular model phone. Google keeps releasing updates, it's up to Verizon/Sprint/T-Mobil/etc. to push them out
I don't like the nexus hardware, no sdcard slot and worse cameras than my 2 year old phone. But each android version they push out is basically hard coded for their phones, which is why it's so hard for manufacturers to port them to last years hardware. Google change the os enough each time that you can't just use the old drivers etc.
The other manufacturers don't help as they use binary blobs for drivers that they don't update, plus they can also make changes to the os to get their drivers working. It's a major problem for someone trying to clean up the mess.
So with Android you get a choice you can either:
1. be forced to buy a nexus, which might be supported for three years (they have stopped supporting the first two already).
2. live with being stuck on the version of android the phone comes with.
3. upgrade to a cyanogenmod build for your phone that has been ported by a school kid and has drivers that crash or don't work.
I don't have the money to buy apple stuff & I don't have the money to buy a new phone when my old phone could actually run the latest software if google could get their act together.
Android has really left a bad taste in my mouth, something I've never experienced with Microsoft. Microsoft force the operators to accept updates (I think apple do too).
Androids Linux origins really show through and it's not something that works commercially.