There are several possible reasons. When you print files, the actual bit stream that represents what is going to be printed is written out to a cache area on your hard drive and then transferred to the printers built in memory. But since the amount of memory in the printer is fairly limited, there is a continuous handshaking between the cache on the hard drive and the printers memory. If you have limited free space on your hard drive, then things can get really slow due to fragmentation of the cache. Sometimes if the transfer is too slow, the printer will time out and stop looking for data and sometimes the computer's spooler will time out because it thinks the printer has gone away.
If you look at the print que, you can see the current job being printed. Let's suppose it has just halted and appears to be going nowhere. Try pausing the line item in the que and then do a restart on it and see if it picks up.
Also check how much free space you have on your hard drive. Another thing to check is that you have the latest drivers for your printer.