The solution is simple; use a tool to keep an eye on MongoDB, make a best guess of your capacity (flush time, queue lengths, lock percentages and faults are good gauges) and shard before you get to 80% of your estimated capacity.
I've been using MMS for about a year now, and I've found their agent to be not-so-great. I keep getting random alerts about the agent being down and then up again.
How would you use CloudWatch to monitor MongoDB? Or do you mean that you can get statistics from the Amazon EC2 mongo instance(s) with Munin and a cloudwatch plugin?
Any recommendations for such a tool?