if it starts fine in safe mode and not normal mode, it's most likely driver related. in safe mode, go to the c drive, make sure that all hidden files are being shown, along with all system files, and add " /sos" to the end of the last entry in the boot.ini file, so it looks like this:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Micro soft Windows XP Professional" /noexecute=optin /fastdetect /usepmtimer /sos
I don't know how computer savvy you are, but the boot.ini isn't necessarily something to muck about with unless you are comfy with doing so. the /sos switch will show what drivers are loading, and then you can see what driver it's hanging at.
Also have you added any hardware/software recently? If you have, uninstall that before you do the boot.ini stuff and see if you can boot into normal mode that way.
thanks,
v