I have figured out the problem to the simple-prefs appearing read only. I mistakenly had the preferences set as strings yet I was writing integers to them. Now the simple prefs seem to work reasonably well. I'm not a huge fan of allowing the users to modify the information from the add-on manager. I especially dislike the fact that the listener, that I have on the preferences, does not trigger until the user enters information. By this I mean that if the user erases information, by highlighting and pressing delete, the listener does not trigger my on-pref-change function. It would be great if the preferences menu appeared more like a submission form, having the user press a button to trigger the changes.
After dealing with simple-prefs, I think it is in the best interest of the widget to do some restructuring. Fixing some of the "hacks" now should hopefully make it easier when we fully figure out the XUL injection. Luckily the code base of the widget isn't large, so it shouldn't be a problem.