Loving your work, by the way!
I found that the section.Instance property returns null if the section is nested within groups. This is because you need to pass the path including groups to the GetSection method.
<login enabled="true" username="user" password="password"/>
You need to call ConfigurationManager.GetSection("myCompany/Web/UITesting/environment");
(It took me ages to track this down, rubbish documentation by microsoft!)
For now I don't generate the singleton and just instatiate the sections myself.