ieri ho dato un occhio al codice che avevo scritto io. L'unica differenza rispetto al tuo sta in queste due righe:

codice:
   xmlDocument.onload=carica;
   xmlDocument.load('scheda3.xml');
Io le ho invertite, ma nn so se questo possa essere rilevante

Inoltre nell'else al posto di questo

codice:
     xmlDocument = new ActiveXObject("Microsoft.XMLDOM")
     xmlDocument.onreadystatechange = IEGo();
     xmlDocument.load('scheda3.xml');
io ho scritto questo
codice:
     xmlDocument = new ActiveXObject("Microsoft.XMLDOM")
     xmlDocument.async = false;
     xmlDocument.load('scheda3.xml');
     IEGo();
spero che possa servirti in qualche modo

Per quanto riguarda il discorso sulla compatibilità con i browser, ti consiglio di fare in generale un pò di debug
(ad es. metti degli alert dentro / fuori il blocco if, controllo se l'oggetto è stato creato... e così via)