Guilty as charged. I get a new phone about every two years. Do I need a new phone every two years? Absolutely not. All essential features work just fine on older devices. Why do I still do it? Probably because I'm too enthusiastic about new hardware.
I hand down my old devices to family members, and when I hand a device down, the receiver hands their device down to another family member. So the phones I purchase are actively in use for at least six years. 6 years is around the point where Apple drops support for major new iOS updates, and eventually also security updates. Batteries get old and replacement costs tend to get very close to the remaining value of the device itself.
I'm not trying to justify buying a new smartphone for myself every other year, but there's only so much you can do as a consumer. Sure, there are aftermarket ROMs for many Android devices that extend software support, but that's hardly something everyone can install and maintain. You can get replacement batteries from trustworthy brands for fairly little money, but then you either have to replace them yourself (which isn't trivial for many people), or pay someone more money to replace it for you.
In my opinion, only a small (or at least lesser) portion of the blame is on the consumer. The EU and other governing bodies need to step in and require manufacturers to:
- Provide at least 10 years of software updates. This doesn't have to include a ton of new features, but it should include compatibility updates (so newer versions of apps run just fine) and obviously security updates. Some people use devices with hopelessly outdated software and they are fine with it, but I'd say up-to-date software is very important nowadays (look at the recent WebP bug for example).
- Provide replacement parts, especially batteries, for at least 10 years without a profit margin, including a service that replaces these parts - again without profit margin.
- Make batteries user replaceable. The EU is already demanding this, so give it a few years and we'll hopefully get at least that.
- As a bonus, make phones modular and upgradable. Framework shows how it can be done for laptops, I'm sure it's possible to miniaturize this to smartphones, even though this probably has its limitations.
If all this is in place we can start blaming the average consumer.
Still, people like me aren't completely innocent, I'll admit that. I know that I'm just fine using older devices. I used a first generation iPad Pro 12,9" for a long time. I think it had a dual core A9X SoC. I eventually upgraded to an M1 iPad Pro and sure, the old device was way slower (or rather the new device was a lot faster), but I'm not doing anything with the new iPad that the old one couldn't handle somehow.
You could maybe even put a small portion of the blame on developers (or rather, people in charge at software companies). Many apps use frameworks like React Native to port their apps to mobile, and while it's better than Electron, it's still nowhere near as efficient as a true native Swift UI or Android (don't know how their current UI framework is called) app. Huge companies that clearly have the budget to make individual, native apps for each platform rarely do this anymore (Discord, Instagram, ...). Building efficient apps would likely make customers less annoyed that their old phone is "getting slower".