Há um pequeno problema. O valor de qtdNumeros que você obtém do prompt é uma string, e ao utilizá-lo na condição do while, pode causar resultados inesperados, pois a comparação será de string em vez de números.
Para corrigir isso, você pode converter qtdNumeros para um número inteiro usando parseInt() antes de usá-lo no while. Aqui está o código ajustado:
let qtdNumeros = parseInt(prompt('Digite a quantidade de números para o cálculo da média:'));
let soma = 0;
let contador = qtdNumeros;
while(contador > 0){
let numero = parseInt(prompt('Digite o numero:'));
soma += numero;
contador--;
}
let media = soma / qtdNumeros;
console.log(media);
Ao converter qtdNumeros para um número inteiro, você garante que a condição contador > 0 no while seja avaliada corretamente. Dessa forma, seu código agora deverá calcular a média dos números conforme esperado.