Determining if a collider has stopped

How can I determine if an object has stopped moving.

If it has a rigidbody you can just check if (rigidbody.velocity.magnitude == 0)

If not you will have to calculate it's velocity by remembering the lastPosition and then checking if (Vector3.Distance(transform.position, lastPosition) == 0)

The motion of an object is stored in the fact the transform is changed in one frame compared to the previous frame. (No don't start on quantum mechanics and speed VS location discussions please). Looking BACKWARDS means checking last speed and current speed and check if the sum equals zero. Looking FORWARD means checking current speed and calculating the next frames speed and checking if those add up to zero. If so the motion at that specific frame will be zero.

You can manually compare the two states to determine if an object is moving or motionless. As spree suggested (good suggestion btw!) the rigidbody keeps a state for this. You can keep track of the velocity of components attached to the player in the same way. I would advise you pick a good component of the "object" you wish to check since if the object is missing or otherwise effected by the environment you could get annoying side-effects.