Hmm, ok so in theory you need a graphical login manager, but why would you startx without one?
Actually, the two don't relate. Maybe you should look at what your graphical login does. Simplified, it's a pretty image that takes your username and password, sends it back to the system, gets back an authentication, and runs startx and .xsession. True, this is a little simplified (there are lots of IF situations, the code handles, as well as security checks, but that's the idea). On the other hand, a console login runs a tty which takes your username/password, sends it to the system, and on authentication starts a login bash shell (but w/o running startx). see the difference? Look at the display of 'pstree' to get a better idea of how your gui login is just a login bash shell with 'startx' run automatically.
And as you say, you 'assume' that the gui login is setup. That's what my original post said. If you boot into runlevel 5, but there is no gui login to welcome you, the script may go into some wacky infinite loop of searching for one, or if the inittab was written rather inteligently, it may try to drop you to runlevel 3, or even 1.