We've been testing Exchange 2000 Server in an active/passive cluster. We've noticed that the cluster takes anywhere from a few seconds to a few minutes to fail over. What causes this difference in times?

The difference is most likely the number of transaction logs that Exchange must play back. After the physical disk resources fail over, the Store on the formerly passive node is ready to mount the Stores that it just acquired from the failed node. The Store must play back all transaction logs for the storage group to ensure that it didn't miss any transactions. The more log files that must be processed, the longer failover will take.