The advice on this site saved me more than once:
Pull up your Run box (Windows Key+R)
type in cmd and hit Enter. This will
bring you to the MS DOS prompt. There
type in the following:
net stop spooler
You should get a message saying the
spooler stopped successfully. Now we
need to clean out the spool folder.
This is where windows keeps jobs that
haven’t been printed yet.
Call up your Run box again (Windows
Key+R) and type in the following:
%SYSTEMROOT%\system32\spool\PRINTERS
This should open a new explorer
window. You are likely to see bunch of
files in there – some of which may be
classified as “Shockwave Objects” by
windows. They are actually not
Shockwave files but whatever. We don’t
care because we will be deleting them.
Just remove everything you can see
that folder and then close the window.
If you can’t delete some of the files,
it means that you didn’t stop the
spooler properly. Go back and try it
again.
This deletes all the jobs on the
queue, so you might need to re-send
some of the documents that got stuck
there waiting. Once the folder is
empty go back to your DOS prompt and
type in:
net start spooler
Your printer queue should be clean
now. If it’s not, you probably did
something wrong.