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.