However we decided not to merge this in for 1.4 for a couple of reasons:
1. As you might imagine, it's a big patch, and potentially destabilizing. Although it's in a good state now, it go there fairly late in the 1.4 cycle. If we'd merged it there wouldn't have been enough time to be sure we didn't break anything for 2.X users. So we held off the merge to make sure that 1.4 was as stable as possible.
2. The approach Vinay took (and the one we're sticking with) is a single-source approach. That is, a single source tree to support both Py2 and Py3, no 2to3 translation needed. The difficulty of this approach is directly proportional to how far back in the 2.X line you want to go. We promised that Django 1.4 would support Python 2.5, but single-source including 2.5 is a lot harder (and makes MUCH uglier code) than single-source for 2.6+. So we made the call to make the Py3 support depend on dropping support for 2.5, which we'll do for Django 1.5.
So, all in all, time timing wasn't right for Py3 support in 1.4, but it is right for Django 1.5. Which is why I expect to see this branch merged shortly after the final 1.4 release.
However, if you're stubborn enough to power through (and not afraid to roll up your sleeves and manually correct any errors you encounter (which is actually quite a good way to learn the nuances of a new language)) your reward is a language that is more forward-thinking and consistent. Sometimes it's worth the frustration (but only sometimes :) ).
And Python 3 actually is a reasonable decision for a beginner. It is more consistent and does a better job of exposing the 'right' way to do many things.
Python 2 is reaching the end of its life and has little purpose except to support legacy libraries and apps and ease the transition.
It is not the users of Python 3, but people insisting on using Python 2 to the EXCLUSION of Python 3, who are fragmenting Python
Feel free to use 3.X, but don't expect a lot of the python libs that make it such a great language to hit the ground running in to work.