Ciao,
l'impostazione di un timeout puoi metterlo prima dell'esecuzione del metodo "open()".
Ad esempio:

timerRequest = setTimeout("gestisciTimerRequest()", 60000); //timer a 60 secondi
ajax.open();
...

Nella funzione richiamata dal parametro "onreadystatechange", pulisci il timer:
Ad esempio, se il parametro "onreadystatechange" è definito nel seguente modo:

ajax.onreadystatechange = gestisciRispostaXML; //le parentesi alla funzione non vanno messe

allora nella funzione "gestisciRispostaXML()", ci sarà l'esecuzione della funzione "clearTimeout":

function gestisciRispostaXML()
{
if (ajax.readystate == readyState.COMPLETATO) {
clearTimeout(timerRequest);
...
}
}

Infine nella funzione "gestisciTimerRequest()", è necessario eseguire il metodo "abort()", oltre che alla pulizia del timer:

function gestisciTimerRequest()
{
clearTimeout(timerRequest);
ajax.abort();
...
}

Spero di essere stato chiaro.
Ciao