What causes a spinning top to stop?

Friction.  If using a frictionless environment, a top could spin indefinitely