XmlDocument в этом сценарии невозможен, так как он попытается высосать этот гигабайт в основную память. Я удивлен, что вы находите XmlTextReader слишком медленным. Вы пробовали что-то вроде следующего?
using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
{
// use rdr to advance through the document.
}