1. A method for creating a virtual machine image in a computer system, comprising: executing a virtual machine monitor; executing, under the virtual machine monitor, a preparation virtual machine, the preparation virtual machine being selectively virtualized above an operating system (OS) of a host system by the virtual machine monitor selectively intercepting certain file-related API's of the OS while allowing other API's to pass through unchanged to the OS; capturing an initial state of the preparation virtual machine, wherein the initial state of the preparation virtual machine is free of any artifacts created during execution of the virtual machine monitor; installing, after capturing the initial state of the preparation virtual machine, at least one application on the preparation virtual machine; capturing, by the preparation virtual machine, an installed state of the at least one application in response to installing the application on the preparation virtual machine, wherein the installed state of the application comprises artifacts generated in response to installing the at least one application on the preparation virtual machine, and wherein the artifacts of the installed state of the application are stored in a shadow area associated with the virtual machine monitor isolated from the host system; freezing, after the installed state is captured, the preparation virtual machine; testing, after the freezing of the preparation virtual machine, the at least one application on the preparation virtual machine, wherein the freezing prevents any artifacts generated based on the testing from being introduced onto the preparation virtual machine; and generating, by the preparation virtual machine after the testing, a virtual machine image representing the initial state of the preparation virtual machine and the installed state of the application.