I've been a Linux user since 2007, and since that time only used Windows sporadically - mostly on other people's computers. The long experience with Linux has allowed me, however, to spot some flaws that have for some reason gone unnoticed by the developers and even by the users. And since no one else mentions them, I will be happy to take on that job.
One of the most common reasons people are reluctant to switch to Linux. Needless to say, in Windows games just work - while the less said about Wine, the better. Nothing has made me rip more hair out than fucking Wine - it had problems running even 20 year old games. Sound or videos not playing, color distortions, random crashes are just some of the issues I've encountered. I've even had one very old game fix itself into a really small window size for some reason. And this is regardless of the convoluted WineHQ "solutions", which rarely actually work - that is, if your game is even there. Frontends to Wine just reek of desperation - PlayOnLinux keeps a different Wine version and configuration for every fucking game - talk about inefficient. And of course, only certain games are supported. If more developers coded games with Linux support, this wouldn't be such a huge problem - but for now, the massive advantage Windows has cannot be denied.
When you run a program through the panel or start menu in Linux and it fails for some reason, you are not notified at all. You have to run it through the terminal if you want to see the error messages - that, however, does not mean they will be human readable. It should be simple for Linux to bring up a dialog box if a program does not launch properly - after all, Windows has been doing that since at least 98...
In Linux, "help" means reading barely intelligible man pages - and even then, you have to know what you're looking for. Though some distros do have real help, it's online and usually low quality anyway. What remains for a newbie user are elitist internet forums that will tell him to RTFM (which doesn't exist). On the other hand - Windows, since at least 98, has included a great, interactive help tool that can diagnose and fix problems with audio, graphics, internet, everything.
Who here has gone without ever breaking his Linux system? Raise your hands...okay, I don't see anyone. Windows keeps several snapshots of your system so that whenever you break it, you can just bring it back to some point in time when it was still working. Linux offers no such functionality - you're going to have to dirty your hands and fix the breaks manually (however, sometimes it isn't possible, like if you fuck up glibc). A common criticism is that the snapshots would take a lot of disk space - however, Linux could keep a list of packages that were changed during the last day, for example - and offer to reinstall the old versions. But it offers nothing like that at all, which is a big flaw compared to Windows. This is regardless of whatever criticism might be levelled at Windows' System Restore - at least it has something compared to nothing whatsoever in Linux (update: some of the newer distros, such as MX Linux, apparently do have similar functionality, but I didn't try them out).
The way you install software in Linux is through packages - of which there are many variants, all incompatible with each other. RPM, TGZ, and DEB are the main ones, but some niche distros have their own. To install those packages, you need to find them in a repository, of which there are - again - many. Then you have to hope that the repo contains what's called dependency information, which tells you which other packages does your software require (but often, it's just the maintainer who THINKS a package is required when it isn't, introducing bloat into your system) - if not, you'll have to hunt them all down yourself. That is, if the package is even available for your platform - remember that the developers have to first actually release the packages, which takes work that small software often can't afford. If it's not, you will have to compile from source - black magic for a recent Windows refugee. Repos are a fine system in general if you know what you're doing and can afford to spend some time - but the Windows system of just running install.exe has its advantages as well (which Linux is now realizing with the inclusion of AppImages and such).
Now I don't know too much about this, but Linux does lack suitable replacements for certain programs, according to the people who use them. Some commonly mentioned ones are AutoCAD, Photoshop, as well as video editing software. Others - which I'm more familiar with - that are also way inferior to their Windows counterparts are: CD ripping software, emulators (Visual Boy Advance hasn't been topped yet, and the available Nestopia ports are gimped). It doesn't even have a program for ripping out the data from video game archives, while Windows has a bunch (Dragon Unpacker, Ravioli Game Tools...). Not to mention the glorious Microsoft Paint, which Linux has had to directly copy with KDE's KolourPaint (users of other window managers be damned?). Truly, Linux has a long way to go before matching Windows in this category.
With all the hoopla about spyware, you'd think tackling that issue would be a priority for any sane operating system. In Linux, any application can connect whenever and wherever it wants to, while you are none the wiser. Recently, some solutions such as Open Snitch have appeared, but they are error-prone (hey, it's a python program...), not included in distros and usually not even packaged. Windows has had better firewalls like ZoneAlarm for a very long time - why is Linux still in the security stone age?
I remember my first computer...it had Windows 98 on it, and of course, as a child I undertook the adventure of exploring it. Checking out all the different wallpapers, icons, cursors and screensavers (that it had by default) was great fun. Then, 7 or so years later I've went into Linux expecting the same thing, but it wasn't there - and still isn't. Sure, you can change themes in XFCE for example, but they're all gray and boring. Creating your own GTK theme is a nightmare, while Windows has an easy to use color editor. Linux icons are same old same old - forget about flowers or things like that. You're lucky if you get a wallpaper that isn't a penguin or the distro name by default. Every theme in Windows had different sound effects - many Linux distros don't have any at all. The icon system is structured terribly - each theme has its own icons stored in a separate folder. When you switch themes, all the icons you've chosen in other software will be replaced by that theme's ones - and if that theme does not happen to include them - an ugly placeholder will take their place. A better system would be to just put them all together in the icon chooser so that a direct path is used (you can still do that but good luck navigating the mess of the icon folder structure).
Yeah, yeah - Linux users are expected to use the terminal sometimes. This doesn't excuse the lack of basic tools though. For example, if you want to configure OpenVPN connections or keymappings, you're going to have to get your hands dirty (and deal with the terrible documentation while at it).
Regardless of freetard screeching to the contrary, this issue is not avoided. It is very easy for a big corpo to to make software which eventually becomes a dependency of most other software - then to start including harmful things in it. Quoting from https://fosspost.org/opinions/are-gtk-developers-destroying-linux-desktop-with-their-plans (archive):
For example: if you have a GTK+ theme that works with GTK+ 3.18, it will not work with you on GTK+ 3.20, If you developed your application by using the GTK+ 3.14 library for example, it may suddenly stop working in GTK+ 3.16 because the developers removed or updated some API bindings
they will break the API and ABI compatibility every 6 months, this means that the GTK+ themes developers and all 3rd-party applications developers will need to check their applications code every 6 months and replace it
This is going to break a lot of applications for desktop users and will cause a lot of headache for third-party developers and even for other Linux desktops like MATE, Xfce and Cinnamon.. etc. And the GTK+ development team doesn’t really seem to care much about it.
An even more egregious example is systemd. Quoting from http://www.softpanorama.org/Commercial_linuxes/Startup_and_shutdown/systemd.shtml (archive):
Systemd is becoming the Svchost of Linux -- the component which most veterans Linux sysadmin do not want to use, but which is enforced by Red Hat dominant position in Linux world.
If you try to browse systemd related articles you will see that the most active resistance occurred in 2014-2015. After that is dissipated to a very few discussions.
Most major distributions such as Suse and Debian adopted systemd because of Gnome.
So the sequence is: make GNOME require systemd, forcing all GNOME distros to include it. Now make systemd swallow most functionality of specific programs (archive), making all other distros dependent on it. And we end up with a situation where Red Hat controls Linux development, and can fuck up all GTK using programs as seen above.
Does this mean Windows is superior? Obviously not - its issues outnumber Linux' by about ten to one - but the advantages it does have must be mentioned, and rarely are. The Linux community has too much fanboys in it, and they will often attack any suggestion that something might be improved, so this article should serve as a cold shower for those people. Note: some distros do better than others in the issues I've mentioned, obviously (but often replace them with other issues - I couldn't get certain bash scripts to run on MX Linux that I can on slackware, for example). And of course, choosing a distro is a struggle in itself that Windows users don't have to deal with.