There are pros and cons to each. I've worked in the hosting/colo space for many years. I think there's a time in a companies infrastructure and scaling needs where being able to customize your hardware and software is the right decision. I see a hybrid future, actually it's already here.
AWS Pros: I can fail over to another datacenter pretty quickly (depends on how you manage your infrastructure). With colo, that's not possible without more cost.
I can quickly spin up or down instances as needed (based on traffic patterns). To have a standby server or servers at a colo = $$$ , or maybe have the dedicated server provider boot up a few of their dedicated servers ?
s3 (tons of storage) - If you've built-out clustered storage systems, you know how expensive (hardware/management) that can be.
Ping,Pipe,Power - They've been managing data centers for many years and have the experience to keep the lights on.
AWS Cons:
Needs better support.
Price: They're priced above a usual VPS, but you need to consider the flexibility they provide.(API,ZONES)
I think for startups aws/slicehost/linode can work.