Q:

Efeito de escrita utilizando javascript, setInterval não funciona

Estou tentando utilizar a função setInterval para escrever 1 letra a cada segundo, mas não funcionou:
partText = "";

function escrever(text) {   
    for (i = 0; i < text.length; i++) {
        partText += (text.charAt(i));   
        document.getElementById("texto").innerHTML = partText;
    }
}

setInterval(escrever("teste"), 1000);

A:

Podes fazer assim:

function escrever(text) {
    var el = document.getElementById("texto");
    for (i = 0; i < text.length; i++) {
        setTimeout(function(letra) {
            el.innerHTML += letra;
        }, 1000 * i, text[i]);
    }
}
escrever('teste');
<div id="texto"></div>

jsFiddle: https://jsfiddle.net/y18afv4t/
A ter em conta:

usa += para acrescentar HTML. Somente = vai substituir tudo
evita document.getElementByID dentro do for, isso é pesado para o browser. Coloca em cache como fiz no exemplo.

A:

O Erro está em duas parte:
1 setInterval.

setInterval(escrever("teste"), 1000);

o correto é 

setInterval(function(){escrever("teste")}, 1000);

2 Laço de repetição.

for (i = 0; i < text.length; i++)

Aqui ele sempre vai escrever tudo o que tem no text
Abaixo as alterações:
partText = "";
var index=-1;
function escrever(text) {   

    index++;

    if(index<text.length){    
      partText += (text.charAt(index));   
      document.getElementById("texto").innerHTML = partText;
    }  
    else
    {
      clearInterval(timer);
    }

  }

var timer= setInterval(function(){escrever("teste")}, 1000);

Exemplo|jsfidlle

