I've been thinking about this and I'm thinking that the way to go is to have BOs for the various settings (like general app, company settings, user settings, whatever). You could load the BO from an xml file using XMLBasics or from a db table.
Then have a shared class called Settings (or something like that) that had shared properties for each of the BOs that actually manage the settings. The BO manages actually loading/saving settings, but access is very easy via the shared class:
'-- Get some setting...Say how much verbage they want in messages!
Settings.User.Verbosity
'-- Or some app setting...Say the theme to use
Settings.App.Theme
The actual settings are thus strong typed. Using the BO mapper allows easy changes to the settings. You would then provide a shared method to load the settings, which could use FillMultipleDataTables, called from InitApp (I think that is what it is called) of AppMain.vb or Program.cs.
I haven't had a chance to try this for real, but sure looks appealing.