Keeping my filament spools from getting knotted? This is something I've ignored for awhile, but it keeps cropping up, and occasionally, if the filament snags real good, it can mess up a great print half way through, etc.

Basically I have my filament spools hanging on a PVC pipe mounted directly above the printer, and the printer just sucks it in from the spool, but occasionally it becomes knotted at the spool, or becomes otherwise tangled.

I'm thinking even if I completely unwrapped and rewrapped all of my spools so there was no trace of a tangle, what's to stop it from happening again? -- What's a good strategy for managing this kind of issue?

Edit: From some of the answers below, it seems that maybe the travel of my X carriage back and forth could be why my spools keep getting tangled. -- It looks like many people have their spools at about 90 degrees from mine (rotated relative to the Z axis of the printer), so that the travel of the X carriage won't have that affect. -- Also guides, etc are probably a good idea.

Here's my current setup for reference (filament removed):
When I first set up my printer, the spool was able to spin freely. Filament was making loose coils on the outer layer of the spool. Snags happened frequently. I decided that not allowing the spool to spin faster than the rate draw of the filament might improve the way the filament was feeding. 

I put more physical distance between the spool and the machine. The filament stopped bunching up in loose coils on the surface of the spool, and the snags went away. The increased amount of slack between the machine and the spool seemed to absorb the "overshoot" of the filament draw and the spools became much better behaved. I also was able to run the spool down to the end more consistently than before.

Not everyone has extra room to use, and not all extruders are conveniently oriented, so moving the spool further away from the machine won't work for everyone. I believe a guide or some sort of dampener would serve the same function, if the underlying problem is the spool loosening up enough to where loops of filament get caught under others and then snag. What worked for me was to stop the spool from "racing ahead" of the rate of draw and loosening up enough to snag.