Your main Silverlight control will be a Canvas. Every canvas has a Children collection.If you are coding mostly in XAML, you may not interact with the children collection directly: the elements you put inside the canvas in the XAML get loaded into the children collection automatically.
You can programmatically access the Children collection: when you Add something to the children collection of your main canvas it will appear on the screen, when you Remove it, it will disappear.
I would create a separate User Control for each of the "pages" you want the user to navigate through. Each of the controls will be in a separate XAML file with its own C# code-behind file.
When your main page loads, you can use XamlReader.Load to read in each of the XAML files for each of your user controls. XamlReader.Load builds .net objects from the XAML - basically it gives you back something you can Add/Remove from the Children collection of a Canvas. Now you have every page the user might navigate to loaded into your program and ready to go.
All you need then are a few 'buttons' to let the user choose which 'page' of your application to visit, then you Remove the current page from the Children collection of your main Canvas and Add the new page.
I'll be interested to see if other people here have a simpler way of doing this....