1. Shut down all running programs, especially virus scans.
2. Clean up temporary files, internet cache, etc.
3. Run Scandisk in through mode, with auto fix errors ( takes awhile ... )
4. If you are connected to the network, or any file shares, disconnect.
Then run defrag. If it still won't run, boot the computer to safe mode command prompt only. Run scandisk from the dos prompt. Then run scanreg /fix
Boot the computer to safe mode, and run defrag again.
If it won't run at this point, you have 1 of 2 things happening. Either you have an extremely trashed file, and you'll have to find it and delete it manually. Or, your hard drive has a damaged sector that scandisk/defrag cannot deal with.