Another argument we don't hear often is that the EC2 model encourages (and almost insists) that you build in failover from the start of a project.
S3, SQS, and SDB provide the same low barrier to entry as EC2 for bootstrapped startups but what doesn't get mentioned often is that as your application matures you can replace each of these components using EC2 with custom, vendor, or open source products. You can do this one by one and eventually what you have is a platform that could be run independently of AWS altogether when/if the need arises.
S3, SQS, and SDB provide the same low barrier to entry as EC2 for bootstrapped startups but what doesn't get mentioned often is that as your application matures you can replace each of these components using EC2 with custom, vendor, or open source products. You can do this one by one and eventually what you have is a platform that could be run independently of AWS altogether when/if the need arises.