Apparently, Google has said that Nexus One is too old for Android 4.0, but they haven't specified why exactly. Some of you might think that's pretty ridiculous and the Nexus One couldn't have been made obsolete that fast, in just 2 years. But before you get your pitchforks, I don't think Google had much of an option here, and here's why.
There are several reasons why Google would not want to put Android 4.0 on Nexus One. One of them would be that they simply don't want to support hardware "that old". They want to move things faster, and instead of focusing on the past too much, they'd rather try to focus more on the future, and the future versions of Android. They wouldn't want to spend all their time supporting more than 2 year old legacy hardware, that might not even support some of the new features in Android 4.0.
The reason why it might sound suspicious that Android 4.0 can't be put on Nexus One is because you'd think that a 1 Ghz processor should be able to handle Android 4.0. And you're probably right. But what about the GPU? Adreno 200 was a pretty bad GPU even at launch, and we didn't have nice looking games on Android until the Galaxy S with its PowerVR SGX540 GPU and the Adreno 205 GPU appeared.
Android 4.0 is fully hardware accelerated, running every OS frame at a buttery smooth 60 FPS. The GPU in Galaxy Nexus should be somewhere around 4-5x faster than Adreno 200. That's quite a leap in performance, and why this kind of performance might not be the mininum requirement, I'm sure it helps a lot.
Now, the above reasons are probably why Google decided decided against putting Android 4.0 on Nexus One, but the biggest reason by far has to be this one: limited storage on the Nexus One. In the early half of 2010, and even later, HTC kept using a meager 512 MB internal storage on their phones, even the high-end ones, to save money and increase their profits, because internal storage is pretty expensive. About 2/3 of that was occupied by the Android OS itself + Sense UI, and the other 1/3 was available to the user.
Earlier this year, when HTC was supposed to upgrade their Desire phone, they realized they can't put Gingerbread on it without cutting a lot of corners. They had to either use stock Gingerbread and give up Sense UI, or cut a lot of apps from the OS. Now, from the way Android 4.0 looks, I'd say it's probably at least twice as big, and it might not fit in the phone even by itself, let alone save space for the user. So when you consider this, it's no wonder that Google said Nexus One is too old.
All is not lost
The ROM community is strong and smart. I'm sure they'll find a way to put Android 4.0, or at least part of it on Nexus One. They'll probably cut some stuff that Google couldn't have cut from it, and leave less space for the user, but the point is they'll do whatever it takes so you can have Android 4.0 on your Nexus One.