If consumers paid out of pocket for their phones then they would be more picky about upgrading and plan prices. It would also make upselling shitty plan features harder so the carriers would loose a lot of money.
Some companies do better in this regard. For example, Samsung provides four major updates, whereas the last mid-range Motorola I owned only gave me one. By the time I receive the fourth update on my current phone, I'll probably be dealing with bigger issues, like the battery not holding a charge—or worse. I wish phones were more serviceable, but that’s just not the case. Still, at mid-range prices, I’m fine with replacing it when it’s on its last legs.
If you're inclined, though, most Android phones allow you to unlock the bootloader and tinker with the software as much as you want.