Grazie innanzi tutto della risposta.
Scusa se mi impunto ma non capisco una cosa, mettiamo da parte per un attimo che non si la maniera migliore per fare sta cosa.. quello che non capisco è perchè il codice cosi come te l'ho scritto sopra non funziona e perche modificandolo cosi...

......etc
var window_categorie = window.open("categorie.html", "_self");
alert ("pippo");
var xmlhttp=switchCategoria.GetXmlHttpObject();
if (xmlhttp==null)
etc....

tutto funzioni perfettamente.
Se tolgo alert ("pippo") e faccio il debug dello script ( io uso Komodo ) vedo che tutto va alla grande fino a dopo il xmlhttp.send(null) quando lo script mi salta allegramente l'xmlhttp.onreadystatechange = function etc... etc... nonostante nel debug io veda il valore readyState a 4 e xmlhttp.responseText che contiene esattamente la stringa con la risposta corretta.

Grazie

Matteo.