This is the sort of thing that can be addressed at the routing level. Basically, both routers advertise themselves as gateways along with a priority (for example, your ADSL router would have a higher priority). If one of them looses their internet connection, they stop advertising themselves as a gateway. Clients react appropriately. If you are relying on NAT on each router, established connections will break in the event the primary gateway goes off line, but that will be the case with any other failover method.
As to how to set this up, I'm not the person to help.