When the source code are ready. Some parts of Android are developed in the open, so that source code is always available. The other parts are developed first in a private tree, and that source code is released when the next platform version is ready.
In some releases, core platform API's will be ready far enough in advance that we can push the source code out for an early look in advance of the device's release; however in others, this is not possible. In all cases, we release the platform source when we feel the version has stabilized enough, and when the development process permits. Releasing the source code is a fairly complex process.