As a repair tech, I would say take a look at whether or not you're overclocking and then, if you are, verify that your CPU isn't causing errors by extensive testing with IntelBurnTest. If it fails, turn down the clock speed and try again.
If it passes, check your memory. Don't bother with the Windows Memory test as it won't give accurate results. There's a version of MemTest 86+ that's like version 5 (unofficial) RC1 that actually works with 64-bit systems properly.
http://forum.canardpc.com/threads/68001-NEW-!!-Memtest86-5.00-RC1-available-!-Need-betatesters-! It's not perfect, but it's better than Windows Memory Test in my opinion.
Then, look at your GPU. If you mine with it, see how many unaccepted hashes there are. If you get a lot of them just before a crash, your GPU could be causing the problem. You can also tell this from bluescreens sometimes. It'll say hardware error of some sort.
Finally, look at your Power Supply. This would take some more extensive testing, so I left it for last. You'll have to unplug it from everything in your computer and short the power on leads to activate it. From there, take a volt meter and check power levels and fluctuations. If it's not steady (or if it's a bit old) you should replace it before you blow everything in the computer.
And don't forget to run chkdsk on your system after each crash. It will sometimes fix errors in the filesystem. Using a live DVD of Ubuntu or something similar to SMART test your hard drives every now and then is also a good idea since a failing drive will fail the entire system as well.