The OEM side is usually pretty easy / trivial in comparison. And there are a number of OEMs who would happily push updates but can't, because they can't get hardware packages from Qualcomm / Amlogic / Freescale / etc.
That, more than anything else, holds back new Android releases on lots of hardware.