Google is releasing the source code as they release new versions, but it is up to the individual phone manufacturers to actually update the phones. Every phone is different, requiring custom drivers, software, etc, so there isn't a "one size fits all" update that can be delivered. Also, the manufacturers and carriers have to make sure everything is stable and such before releasing new versions, otherwise they would have a ton of support issues on their hands.
So, what ends up happening is that there are a handful of different versions of the OS on the market at any time, and it is a rolling cycle of what is currently in use. We were unfortunate to have an already antiquated version of the OS when our phone was released (it was likely the most up to date when they started, but by the time it was released it was behind the times), so we feel the sting more than many.