Is this a good way to approach the problem?
Preloading the object on login is a good idea. A better one would be to break the object tree into small parts and load each of them on request, when the user need to edit that specific part of the config. This assumes that instead of providing a single view to edit all the config properties you somewhat "organized" it into many separate forms, which will request part of the config they need only when it is appropriate. It'll need some work but your architectur be more maintainable if that object changes later.
I don't think you are doing it properly since you transform your object tree (I understood it was some big Java object) to XML, instead of sending that object to the client right away. GWT RPC will handle the serialization/deserialization (actually by using JSON instead of XML). Isn't it easier to manipulate a Plain Java object than XML (even with good libraries) ?
Is there a better format to store this data server side instead of XML?
I generally use JSON. It also has good libraries. I only use XML when a human need to read the file directly.
But I don't see why you would need either of them. GWT RPC mechanism will serialize your java object into json automatically. Just provide a "shared" object and (if needed) a converter to convert your object tree to its shared form and back.
Is the RequestFactory also good for the initial download of the object tree?
As XML takes more space than JSON and that manipulating XML is slower than manipulating a java object, I would actually advice to use RPC.