Unfortunately a lot of Android's issues with updates stem from the Linux OS that it's based upon, specifically the driver side things. The drivers and/or kernel modules are built against a specific version of the kernel and if you try to make those drivers and modules operate with any other version of the kernel things fall apart. There's no... shall we say, ABI or application binary interface that drivers can use to plug themselves into the kernel like drivers can easily do on Windows. Linux, by its very open source nature, expects drivers to be included in the main line Linux kernel source tree. Unfortunately most for profit businesses (Qualcomm and Broadcom, for instance) would never in a million years allow everyone to see their crown jewels because then they wouldn't be able to make any money.I think that can be solved through drivers and power profiles and instead using a unifoed binary build controlled directly by Google, pushing updates directly to handsets.
The customization of the Android OS for each device is it's biggest problem and needs to go away.
IMHO the problem is that the idiot marketeers at all of the handset makers want to differentiate their product based on useless software features rather than just competing based on who can makethe best hardware.
This needs to stop.
They need to adapt the desktop OS model where the binary builds are identical from device to device and the wireless carrier and hardware maker have absolutely no say in the software running on the device at all, other than providing drivers and maybe choosing to include some preinstalled apps.
Once this hurdle is overcome Android will become far superior to where it is today.
Sadly, open source and the business world (where making money is the name of the game) rarely see eye to eye.