Sorry, I was confusing this with another post.
I'm not sure what you've done for troubleshooting, so please forgive me if you're past all of this.
First, check your logs:
You might see the cause there.
If there's nothing obvious, you could try using an interactive boot if your distro has it, or start in runlevel 1 (you can always use telinit to change levels after boot). The default runlevel is set in /etc/inittab or you can temporarily change it in grub or lilo. You can then try starting things individually and see what happens.
It just may be short of memory or swap space if you're running X and a bunch of services in a low-memory situation.