I personally would start with a OOP wrapper of sorts to manage the models I have going etc... so I could easily turn off all the outdoors and turn on the building stuff and vice versa.
Whether you load portal on demand, or preload all... you at the minimum needs a "list" system so you can switch what objects are around.
Another trick.. is to set up each "Area" in a different place in 3d space.. (like building outside the skybox that surrounds the outdoors... then - just move the players position accordingly... you still need a list to exclude all the "out of eyeshot" things though...
And the load on demand technique still needs a list so you can remove the old, and on with the new... OR... Make separate programs and chain them... easier to manage MAYBE... but clunky... multiple load times etc.. which is acceptable if you ask me.. Far cry kinda does that.... though I think they do the remove all from ram and reload.. they dont chain processes.
I'm rambling ideas for ya ....