With some versions of Sitecore, there is a known issue where a 500 error will be shown if the connection to the Sitecore database is down. A Karbyn blog post details the confirmed versions and how to reproduce, as well as a potential fix via Sitecore support ticket 377391. We have also confirmed the issue occurs with Sitecore 6.6 revision 130529.
When we attempted to implement the fix found in ticket 377391, we found that this fix only solved the problem on single instance installations. With a multi-instance configuration where event queues are enabled, several other errors popped up that the original ticket did not solve. The EventProvider and InitializeManagers classes throw errors prior to allowing the website to display the custom error pages.
After following up with Sitecore Support, we were able to get some help and another fix that resolves the issue for installations running event queues. In addition to the original fix (Sitecore.Support.377391), a new DLL is added for the remaining classes (Sitecore.Support.401487).
If you contact support and reference issue ID 400401, Sitecore Support should be able to get you the needed configuration changes and the DLLs. That issue has the original fix attached to it, as well as the new fix and a configuration file we created to include the changes via a patch file. With these fixes, your custom error pages will display even when the databases are down on a multi-instance setup.