What, if anything, happened or changed just before the boot problem?
Can you get into BIOS/CMOS settings and switch it to verbose output (I'm not sure how it will be labeled in the settings). You might be able to get an idea of exactly where it's hanging and why.
There are a few things that might cause this. I've seen computers hang at boot because of overheating (too much dust between fan and heatsink, for example). But in that case, it should hang at random points--POST, OS loading, desktop--not at the same point every time.
It could also be that the boot record is corrupted. If get far enough in booting to get a alternative boot option (F12 or F11, probably), you could try booting from the XP CD and using the recovery console. Then you can try fixing the boot sector with the command FIXMBR.