How do I prevent widgets from moving around on the dashboard?
In Finder, press ⌘ShiftG and type ~/Library/Preferences/com.apple.dashboard.plist and press Enter. Press ⌘I to bring up the file information pane. Click the Locked checkbox.

This will not prevent you from moving widgets around,opening new widgets, etc., but will preserve the arranged state of widgets at the time of locking such that any future time you launch Dashboard (rebooting, logging in, restarting Dock, etc), they will be preserved in their state at the time you locked the Dashboard.