For enterprise needs, I support building of a private cloud. Any type of vendor lock-in for this infrastructure will significantly impact future flexibility. This does not mean that the hosting of the cloud should not be outsourced. In fact, I prefer outsourcing the hosting and management of this infrastructure as there is real value in having access to resources with deep experience in managing private clouds. Interesting article in InfoWorld on the topic. Companies that provide technology to build a private cloud are: Elastra, 3Tera, Cassatt, and ParaScale.
My current preference is to virtualize all our apps and to build a Virtual Server farm as a cloud-computing platform. Once the organization reaches some scale (50+ servers), a robust product to manage the cloud will bring value.