Ho riscritto tutto così:

codice:
<script language="javaScript">
function show() {
var newtitle = "nuovo titolo";
document.title = newtitle;
if (document.title == newtitle) return true;
}

for (var i=0; (i<100); i++ ){
setTimeout("var res = show();",200);
if (res = true) i=100;
}
</script>
Il for invoca il delay e poi chiama la funzione. Se la funzione riesce a sostituire il title allora restituisce true e lo salva in res. Poi mediante un if setto la variabile contatore a 100 terminando così il for.
In questo modo lo script non è intrusivo e non uso setInterval (ho provato a usare degli alert, non creo un ciclo infinito).

Non ho capito molto bene il fatto che se usavo setInterval era errore semantico. Esiste un garbage anche con javascript?