I use the following in the Global.asax to redirect to a login page as it allows for the use of the login control's redirect after login functionality.
sender, EventArgs e)
Exception ex = Server.GetLastError();
HttpException httpEx = ex
currentPage = HttpContext.Current.Request.Url.PathAndQuery;
// check for access denied and prevent possible redirect loop
(httpEx.GetHttpCode() == 403
To have a predefined set of frontend error pages, separated in similar fashion to the current frontend and backend groups, that would be customizable(title, theme, layout and content) and support multi-lingual translation. The page for a given error would always exist (base error page can't be deleted but translations of it may be deleted) and always be accessible anonymously. The Sitefinity route handler would catch an HttpException, matching a predefined error page, and redirect to the error page. I see this being most beneficial for 403 and 404 errors, as they could easily be styled to look like the site and have access to the content of site.