The geographic load balancing side is basically a solved problem (although you don't want to use only DNS-based load balancing like Route53 in most cases), but the hard part is wide area replication of databases for hot failover.
It's pretty easy to do failover if you'll accept a 5-10 minute outage, though.