Oi Vailter, você precisa colocar a parte do código
if (existe == false) {
lista.push(itens);
contador++;
}
fora do for, pois o for só é percorrido depois da primeira inserção na lista. Pois do jeito que tava o contador não era incrementado nenhuma vez o que acabava resultando o loop.
while(contador <= quantidade){
var itens = prompt("Digite os itens de sua lista " + contador);
var existe = false;
for(var posicao = 0; posicao < lista.length; posicao++ ){
if (lista[posicao] == itens) {
existe=true
break;
}
}
if (existe == false) {
lista.push(itens);
contador++;
}
}