Olá Andrey
Esse erro acontece pois o filtro de autenticação não foi projetado para ser utilizado como filtro global. Quando o usuário acessa a aplicação, não importando qual a action que ele está tentando acessar, o filtro verifica se o usuário está logado e caso ele não esteja, faz um redirect para a tela de login.
No redirect, o navegador do usuário tenta acessar a action do formulário de login, porém antes de acessar a action o filtro é executado e faz novamente um redirect para a tela de login, veja que temos um loop infinito de redirects.
Para resolver o problema, dentro do filtro se o usuário estiver tentando acessar o LoginController, precisamos deixar o usuário passar mesmo quando não tivermos um usuário logado:
public override void OnActionExecuting(ActionExecutingContext ctx)
{
object usuario = ctx.HttpContext.Session["usuarioLogado"];
// se o usuário não está tentando se logar e ele não está logado
// queremos redirecioná-lo para a tela de login
if(!(ctx.Controller is LoginController) && usuario == null)
{
// faz o redirect
}
// se o código não entrar no if, então o usuário pode passar para o controller
}