Opa Matheus!
Seu código funciona e tem uma boa lógica.
Acho legal da sua parte querer e dar abertura para receber feedback.
Algo que você poderia ter em mente para o futuro é tentar não repetir código, especialmente um grande como é a verificação de login/senha. Sua negação lógica ficou perfeita, mas traz complexidade ao código. Pense que "menos é mais" em programação, ou seja, tente manter simples (em inglês há o acrônimo KISS - keep it simple stupid).
Então você poderia declarar essa parte do login/senha em uma variável booleana e no final só negá-la. Assim:
var valido = (loginCadastrado == loginInformado && senhaCadastrada == senhaInformada);
if (valido) {
...
if (cont == 4 && !valido) {
Outra coisa que você deve tentar manter em mente é a experiência do usuário. Quando o usuário erra pela terceira vez ainda recebe a mensagem para tentar novamente e na sequência a mensagem de que as tentativas foram esgotadas.
Fiz algumas observações e alterações no código do Adriano, neste post (sobre o mesmo exercício):
https://cursos.alura.com.br/forum/topico-fiz-o-codigo-porem-queria-melhora-lo-123296
Por fim, evite testes de condição sem separação:
(cont == 4 && loginCadastrado != loginInformado || senhaCadastrada != senhaInformada)
É melhor separar as condições da forma que você pensou para evitar surpresas:
(cont == 4 && (loginCadastrado != loginInformado || senhaCadastrada != senhaInformada))