I don't know much of anything, but I think there's a problem with the widgets.php file. Several people have reported this error (I copied this from someone else's post)
Warning: array_keys(): The first argument should be an array in /home/www/stuff/yearxi/wp-includes/widgets.php on line 654
Warning: Invalid argument supplied for foreach() in /home/www/stuff/yearxi/wp-includes/widgets.php on line 654
The same thing was happening to me last night. It happened right after I had installed a text widget, then removed it. It installed fine. But when I removed it, the error occurred. Looking at the widgets.php file, the instance that the error is referring to - array_keys and foreach - seem to be dealing with the text widget. Text widgets are different since you can have more than one of them.
I went back to look at what the widgets.php file looked like in 2.3 (might have been 2.2...it's an old sort of dormant install) and there was nothing like that. And the little snooping I did, together with the wording of those warnings, makes me think that there's just something plain written wrong there.
Everything I read advised reverting to a back up, reinstalling, reupgrading. Blah. I just added back a text widget and the warnings went away.
But I would love someone with more knowledge to let me know if the warnings going away and my adding back a text widget were just a 'happy coincidence'. And if the issues described in this thread seem to be tied up with that same - foreach and array_keys area of widgets.php. The mystery is driving me mad!