We replaced a decent number of m1.large instances with three pretty low end boxes with SSDs on a dedicated gigabit switch.
Riak is incredibly awesome for scaling. The only flaw i've found is there is a tipping point where load on the cluster is too high to be able to add a new node and have partitions hand off to it in a reasonable amount of time. You might also run into the same issue if you lose more than one node at time and try to bring up new instances to replace them (every add or remove event results in a rebalance).
JavaScript MapReduce is a joke. I could never find the right combination of incantations to make the VMs perform in a halfway decent manner. We didn't bother trying to implement in Erlang because we didn't have the expertise in house, but supposedly it is a bit better.
If you need multi-site replication, you'll need to build it yourself, or find some other way to work around it. The price tag for paid Riak is well beyond anything I'd consider reasonable. Think more expensive than the hardware you are running it on.
SSDs and 10g ethernet are a must. SoftLayer is probably a better route if you want to be in "the cloud," but definitely consider your own hardware that you can poke with a stick if something seems odd.