Generally TinyMCE (not only in WordPress, the stand-alone versions too) can be affected by 3 things:
1. Some of the old .js and .css files weren't replaced when upgrading it.
2. Some of the old files are loaded from cache instead of the server.
3. Some kind of browser addons, antivirus, popup blocker, anti-phishing, etc. software that prevents the js from running properly.
Additionally in WordPress all TinyMCE .js files are concatenated and compressed before sending them to the browser. This makes it a lot faster. The compressed file is also saved in wp-content/uploads/js-cache directory and it's name is tinymce_..long number...gz. This file can be deleted safely, as it will be recreated the next time TinyMCE is loaded.
Some hosting companies also enable compression of all server output by default and in very rare cases, this is not set up properly in php.ini (they use buffering instead).
In these cases, the TinyMCE compressor cannot detect the setting which results in double compression. Trying to load sitename/wp-includes/js/tinymce/tiny_mce_config.php directly in Firefox, results in a large garbled text.
To fix this, tiny_mce_config.php can be edited and the line
'compress' => true have to be changed to
'compress' => false. There's also a small plugin that will change this setting, linked in this thread:
If your server is doing that, it's a good idea to talk to your hosting company and ask them either to disable compression for your account or to set it up in php.ini, or perhaps use Apache's deflate module as it works better.