That's only part of the problem.
You mean troubleshooting? A basic skill that one needs to develop if they want to solve problems (and use computers)?
Lack of troubleshooting skills are part of why there are compatibility issues, because users who recognize problems don't report issues or solutions accurately or sometimes not at all. Expecting web programmers to anticipate every issue that may arise is unrealistic, that's why on larger projects there are teams dedicated to QA who have to confirm the issue and then report it in a way that allows programmers to quickly resolve it. There are usually a small team of programmers and significantly larger base of users who all have different setups, your expectations are unfair.
This WTF keeps getting better... no I don't mean troubleshooting. I mean the fact that, especially with web-based software, the end-users are being treated as testers instead of, as you say, actually having a QA department handle things. Expecting that things like clearing cache and cookies is something your users should do is awful. Here's why: anything your user can do to your cache, your code can do it too! Your web code should be doing some kind of sanity checking on itself to fix cache / cookie issues
so your user doesn't have to. Or at least give an appropriate error, rather than presenting a UI that half looks like it is functioning but then just... stops. What I mean by that is - if your site requires cookies, DON'T PROCEED LIKE YOU HAVE THEM ENABLED IF THEY AREN'T.
I troubleshoot technology all day for work, I don't wan't to have to troubleshoot websites because they don't even put in basic error checking or code paths for anything that doesn't match exactly what they expected to happen.
So yeah, get off my lawn and all that...