1. A method of providing a computing infrastructure based on virtual machines, said method comprising: providing a virtual machine provisioning system, as executed by a processor on a network, said virtual machine provisioning system: receiving a virtual machine request, as an input; retrieving a virtual machine image from a library of virtual machine images, to accommodate said virtual machine request; constructing an instantiated virtual machine from said selected virtual machine image by provisioning said selected virtual machine image, to accommodate said virtual machine request, and by at least one of removing and installing software systems, to accommodate said virtual machine request; and outputting said instantiated virtual machine in response to said input virtual machine request; and providing an image update system for determining an optimal timing for updating at least one of said virtual machine image and said virtual machine as instantiated, based on projected update costs.