I’ve been having this problem intermittently when plugging in and unplugging my external monitor.
I found a fix to the black menu bar that involved going into System Preferences->Desktop & Screen Saver and toggling the “Translucent Menu Bar” setting.
However, my backgrounds were still the gray linen background. Upon further searching for that system, I found that killing the Dock.app fixing the problem via one of the following code (which I put in my ~/bin as “fixLinenBackground”)
sudo kill -HUP `ps -ef | grep [D]ock.app | awk '{print $2}'`
or
killall Dock.app