Código:
 function newXMLHttpRequest(){
var xmlreq = false;
  if (window.XMLHttpRequest)    {   //Mozilla, Safari etc
        xmlreq = new XMLHttpRequest ();
  } else if (window.ActiveXObject)    {      // IE
        try{
              xmlreq = new ActiveXObject ("Msxml2.XMLHTTP");
        } catch (e)        {    // en caso que sea una version antigua
             try{
        		 xmlreq = new ActiveXObject ("Microsoft.XMLHTTP");
            } catch (e)  {
                alert("Excepcion="+e);
            }
		}
  }  else {
      return false;
  }
     return xmlreq;
}
  Esa es mi llamada a newXMLHttpRequest yo creo que si que me esta creando una nueva instancia. 
Aunque lo que tu dices creo que tienes razon que termine uno y empiece otro al poner el alert.  Aunque por otro lado es algo raro que en IE si que funcione sin hacer uso del alert y donde de el fallo sea en Mozilla. 
Buah ¿Crees que debo hacer algun otro cambio?  
saludos dablin