One way to approach this is to intercept the page load with the template_redirect
action and test user status before rending the login page. Based on user status you could redirect to another page instead of loading the original page content.
function wpse_is_user_good_enough() {
if ( ! is_page( 'your-login-page-slug-here' ) ) {
return; // Not the login page so return early
}
// The login page is loading. Ck user status here and bounce them or send them along
}
add_action( 'template_redirect', 'wpse_is_user_good_enough' );
The above example will hook the wpse_is_user_good_enough function to the template_redirect action. Test right away if this is the page you wish to intercept; return if not.
If you have a PHP template dedicated to the login page, you can embed your user status test on the page template and skip the rest. Using a page template would allow you to display alternate content instead of redirecting an unauthorized user.