We had the same thing happening. Tracing through the process I found that if a database connection is lost during the page load it would reset to the default. Fixing our sugar database configuration and our db server configuration has minimized the problem now.
The problem was traced to modules/Home/index.php. If the connection failed during the getPreference for the current user then it would return nothing causing it to go into the default dashlet control block.
PHP Code:
$columns = $current_user->getPreference('columns', 'home');
$dashlets = $current_user->getPreference('dashlets', 'home');
// fill in with default dashlet selection
if(!isset($columns) || !isset($dashlets)) {
Bookmarks