Maria Celia,
você trocou "i" por "posição" mas ficou um "i" ainda em "i++".
E seu if não deve considerar um else. Mas deve haver outro if pra incluir o "ingrediente" em "ingredientes".
<meta charset="UTF-8">
<h1>Receitas do Yan</h1>
<script>
var ingredientes = [];
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
var contador = 1;
while( contador <= quantidade) {
var ingrediente = prompt("Informe o ingrediente " + contador);
var igual = false
for(var posicao = 0; posicao < ingredientes.length; posicao++) {
if(ingrediente == ingredientes[posicao]) {
igual = true
document.write("voce colocou dois ingredientes iguais");
break;
}
}
if(igual == false){
contador++;
ingredientes.push(ingrediente);
}
}
console.log(ingredientes);
</script>
E não mudei a condição em que o código informa sobre "você colocou ingredientes iguais". A mensagem aparece só depois de colocar todos os ingredientes, mesmo que tenha corrigido isto.
Lembre-se que o resultado só está sendo exibido em console.
E cuidado com a falta de ponto e vírgula. Não afetou seu código agora, mas é boa prática colocá-los ao final de cada linha.
Bons estudos!