Devi definire la variabile globale, altrimenti chiusa la funzione la variabile e` persa:
codice:
var intervallo;

function func() {
   x += 1;
   if(x > 400) {
      clearTimeout(intervallo);
   }

   intervallo = setTimeout('func()', 1000);
}
Ma c'e` un errore di concetto: tu prima di uscire dalla funzione fai ripartire il Timeout.
Vedi questa modifica:
codice:
function func() {
   x += 1;
   if(x > 400) {
      return;
   }
   setTimeout('func()', 1000);
   return;
}