The short answer is: I can't find a good way of having a S3 hosted static website survive a region failure without using additional logic or servers. I'd be really interested if anyone else can come up with a way.
You could put CloudFront in front of the S3 website. If the bucket goes down the content will be served from the cache even if it's stale. This of course relies on the content being in the cache for the endpoint closest to the customer.
You could use S3 cross region replication to move the S3 data to another region. Originally I thought you could use Route53 failover routing to select from the working bucket, but this won't work. Cross region replication has to be to a bucket with a different name, with S3 website hosting you can only host a website from a bucket named for the domain. I wondered if there was a manual solution, but you can't rename buckets, and if the first region is down you probably can't delete the bucket with the website name.
I thought a combination of CloudFront and Route53 might be made to work, but this would rely on creating two CloudFront distributions that serve content for the same domain. This doesn't seem to be possible.
This isn't ideal, but I think you could do this with EC2 and Route53. Create servers in two or more regions, have them manually proxy S3 content using Nginx or similar, and balance between them with Route53. This defeats the point of S3 hosting and is overall a terrible idea, but it could probably be made to work if it absolutely had to.