There is so much time, effort, and physical waste that is generated by slightly redesigning phones every year purely for the sake of making sales (as opposed to meaningful improvement upon the existing design or introduction of a new hardware feature). Think not only of people upgrading for the sake of it, but all of the cases, screen protectors, and other assorted accessories cast in plastic for previous models that are garbage now.
It would be nice if we could just space these things out to 5 years or so now, because that's probably how long it takes for anything to change enough to justify a new model.
But the software development is driven by the profit from hardware sales. Why would they improve the software if it doesn't make money?
I guess in the ideal world the phone's software should be pay-to-upgrade but free-to-stay-as-is.