The obvious way to prevent loops is to follow the same advice a doctor might give you when you complain, "It hurts when I do this"—don't do it! Of course, in the real world, there are many variables that are out of your control. I've seen more than one network go down because someone decided to plug both network drops under his desk into the little switch he'd brought in from home. Heck, I've seen network administrators do it themselves.
Having more than one link between switches is a good idea in terms of redundancy—in fact, it's recommended. The trick is to have only one link active at a time. If you configure two links between two switches and shut one down, you'll solve the loop problem, but when the live link fails, you'll need to manually bring up the second link.
Spanning tree is a protocol designed to discover network loops and break them before they can cause any damage. Properly configured, spanning tree is an excellent tool that should always be enabled on any network. Improperly configured, however, spanning tree can cause subtle problems that can be hard to diagnose.
Spanning tree elects a root bridge (switch) in the network. The root bridge is the bridge that all other bridges need to reach via the shortest path possible. Spanning tree calculates the cost for each path from each bridge in the network to the root bridge. The path with the lowest cost is kept intact, while all others are broken. Spanning tree breaks ...