I left this comment on today's post by Randy Bias titled VMWare vs Amazon... ROUND ONE... FIGHT!:
Functionality is more important, imho. As a hypothetical example, say there exists an EC2-like cloud where security groups span all regions (in EC2, as we all know, security groups are confined to a single region). Switching between EC2 and this new cloud and back for operations (start, stop, status) would be relatively easy, with help of abstraction libraries; but once you set up your architecture to use global security groups and rely on this fact when writing your app, it won’t be as easy to switch back and forth.
In other words, cloud lock-in via functionality is harder to overcome than cloud lock-in via API.