Can we stop for a second and look at how silly the mobile phone situation is for Android?
Let's do a very quick comparison for a second: computers vs. mobile phones.
When you go to a shop you buy a computer, vast majority is x86 based. You can also buy a copy of Windows (even if this is usually bundled) and you can install it. If you don't like Windows you can try Linux, of very few other options. If it's Apple you have one more option: MacOS.
In other words a very limited number of Operating System (Windows, Linux, MacOS, but in BSD if you want) will run, unmodified, on the device you just purchased. At most you need to install few additional drivers by hand and that's it. But yet again the driver is usually the same, it doesn't depend on the Brand of the device you are installing it on. For example: you download the nvidia driver and it works on Dell, HP, Asus, Lenovo etc, as long as you have an nvidia card.
Now you buy a mobile phone. Let's focus on non Apple hardware for a second since Apple case is just a very particular one (for the bad and the good). Usually you have very little, if any, possibility to just install your own Operating System on the device if you lack the very custom parts the vendor is putting in.
It's not a mere problem of missing device drivers (which is anyway a big one) or locked devices. The problem is the fundamental different approach to Operating Systems in phones. One of the problem is certainly the very unfriendly CPU architecture: ARM. ARM lacks one very nice feature of x86: if you build an x86 kernel it will run on any freaking x86 based computer on this planet, doesn't matter the vendor (AMD vs. Intel mainly). ARM on the other side is a scattered cluster f*ck. Sometimes even two different CPUs from the same vendor cannot use the same kernel! Now there is effort in the Linux kernel to reduce this problem, but it's very far away from being solved.
Regardless of the (in my humble opinion retarded) reasons, the fact is that every single phone vendor has to do a lot of work and put a lot of effort to build up a quality software for their product. The non shared part of the work is quite high. The race for the most custom UI is another side of it.
Now let's move to the Utopia: can phone vendors please stop pretending being Operating Systems vendors and do phones only? Android is for the most part still an open source project. Instead of moving to close it up (a warring recent tendency), can we actually move towards a more PC like system, where Android is just an OS and you can install it on you phone and you can update it without waiting for the phone vendor? Needless to say this really open Android project should not be driven by any of the vendor (or by all of them together).
What I'm thinking is basically like cyanogenmod, for all models. All of them. Now some help is needed from manufactures and ARM as a start, to make it easier. Also device drivers need to either become open or become nvidia-like. Since the latter takes a humongous effort, I highly recommend the former for the best result.
At least security updates would be granted and a lot of this mess could be avoided.