1. A method for providing fault-tolerant protection for a primary virtual machine using a snapshot image of the primary virtual machine that represents a state of the primary virtual machine at a time t 0 , the method comprising: forming a snapshot image of a state of the primary virtual machine; tracking virtual machine instructions executed by the primary virtual machine; executing an incremental checkpoint of a set of changes made to the state of the primary virtual machine since forming the snapshot image; merging the set of changes into the snapshot image, thereby creating a new snapshot image for a backup virtual machine without replaying the virtual machine instructions executed by the primary virtual machine; executing a subsequent incremental checkpoint of a set of changes made to the state of the primary virtual machine since forming the new snapshot image: and merging the set of changes of the subsequent incremental checkpoint into the snapshot image, thereby creating an updated snapshot image for a backup virtual machine without replaying the virtual machine instructions executed by the primary virtual machine, wherein each of the primary virtual machine and the backup virtual machine has a virtual hardware platform, and wherein the virtual hardware platform comprises a virtual processor, a virtual memory, a virtual network card and a virtual disk.