You can access your dev environment from any place you can install the necessary remote desktop tools.
You've got good redundancy if you're backing up the image properly.
You're locked in to the instance type. You'd have to rebuild the instance from scratch if you wanted to move to newer, more powerful instance types.
Your instance types aren't unlimited. So you have to be certain that AWS instance offerings will cover all your development needs.
You can't (easily) get your AWS instance out of AWS and run it elsewhere. So you're locked to AWS. (Yea, I know Eggplant is supposed to let you free your AWS instances but it lags state-of-the-art AWS tech and only sort of delivers on its promise)
You're beholden to having a working internet connection to develop.
You're always paying for your machine. If your instance is always on the costs of hosting in AWS can run past the costs of owning and maintaining the physical hardware.
You're always paying for storage. Assuming you're keeping things on an EBS volume that can add up over time.
Occasionally AWS instances die. Admittedly, so does physical hardware, but at least you can kick it when it's under your desk and dead. With an AWS instance you've lost your outlet for stress. :)
Despite a cons list longer than a pros list I do it. It takes a bit of forethought to make sure your instances are safe in the event of a crash. But on the whole it's a nice way to roll.
Now if only I could get OS X instances in AWS...