Я предполагаю, что "пространства имен динамически добавляются", вы имеете в виду префикс пространства имен. Это создает документ, насколько он близок к тому, что вы имели в виду?
XNamespace ns1 = "name1", ns2 = "name2";
XElement elem = new XElement("Root",
new XAttribute(XNamespace.Xmlns + "ns1", ns1),
new XAttribute(XNamespace.Xmlns + "ns2", ns2),
new XElement(ns1 + "element1"),
new XElement(ns1 + "element2"),
new XElement(ns2 + "element3"));
elem.Save("example.xml");