What you're asking for is actually a function usually reserved for HA type setups (hardware load balancers, multiple servers, etc).
To return a different DNS resolution, you would first have to identify that the service was unavailable. This can be done if you externally host your DNS with someone like ultradns and pay for their sitebacker service (it's not horribly expensive, but it is not free). I am not aware of any other services/registrars that will perform this function for free.
Otherwise, you would have to funnel your requests thru a host that was at least reactively aware that the web server was down, and route the request to somewhere else. This method has the drawback that if it's your internet connection that's down, you're still boned. Depending on your requirements, you can likely get by with some pretty low power machines for this setup.
This can all be done fairly affordably, but! it will require at least a moderate investment by your business. If the business chooses not to spend some $$$, then the business needs to acknowledge that sometimes, their customers will get timeouts. Personally, I have almost 300Mbs bandwidth across multiple ISPs and datacenters, and still get the occasional timeouts due to...say...both ISPs deciding to do unannounced router updates on the same night.
It really is as simple as clearly stating that more uptime = more $$$. Proper design and configuration has some part as well, but remember the triangle: cheap, fast, good...pick 2.