I'll second the hardware issue. Typically, if it's a software problem, it almost ahs to be corruption in the OS itself (or low-level utilities, such as interface modifications, some monitor software, core system drivers like drives or systemboard, or anti-virus software). Most other types of software will still booth the system (even many of the types listed before), but then produce freezes or errors.
Hardware is likely. I'd try to download a disk-bootable memeory tester (Microsoft offers one for free that you put on a boot disk, but it's hard to find on their site. Use a google search of MS's domain and you should find it). BAs RAM could cause problems (but I'd expect to see errors in Linux if this was the case). As others have suggested, scan the hard drive as well, as this is a likely culprit, as well.
On an offhand note, I have an issue with my system and a particular USB device. I use a Memorex USB key. I've reformatted they key in XP with an NTFS format. If the key is plugged in when I start the computer, it will hang as it tries to use the USB key as a boot device (I've been too lazy to change my BIOS settings).
If you have time, try starting at the basics and working up. Unplug all the hardware but the essentials: video, CPU, boot drive, keyboard, mouse. Try and boot. IF it doesn't work, you've narrowed it down to these, and can play some more (like removing one memory chip at a time, or swapping parts out if you have some known-good replacements). If it does boot, then something you've removed caused the problem, and you start adding things back one at a time (add the CD or DVD drive, reboot...add a net card, reboot, etc). It's slow, but it'll identify it if there's a hardware problem.
Try the things MortFurd suggested first, howeve,r as they are typically easier to implement. I did want to point out something about MSConfig, though: it allows you to selectively disable some startup software, and you can use this for troubleshooting, as well. Start by disabling non microsoft stuff, for example, adn see if the problem is still there. Then you can add one service/app at a time (or a small handful at a time) back in and see if the boot issue re-appears.