The GNU project is a project to provide a complete free operating system (it was originally intended to be a complete replacement to Unix). Torvalds principally authored the Linux project. Some people had the bright idea of combining the Linux kernel together with the incomplete GNU operating system (the incomplete GNU kernel was the missing final piece) to form a complete OS. The Linux system together with the GNU system form the principle components of such a system.
GNU+Linux by itself is a full system; it is a complete replacement to Unix (Unix is considered a complete system). GNU+Linux are normally used as a basic platform for further work. As far as I know, no other software systems are as
fundamental (to the system as a whole) and contribute as much work (in terms of lines of code) as the GNU system and the Linux system.
The problem I have with this, and what everyone else is saying about it, is that GNU + Linux only forms a complete system because that's what GNU defines as a complete system. It isn't based on any precedent outside of their own and the rest of the world actually tends to define "operating system" definitely.
People didn't port GNU software to Linux with the intention of forming a so-called complete operating system, they ported programs that were useful tools, which included GNU and non-GNU software.
You mention that Windows is a complete system. That's interesting, because by GNU's criteria I think they would disagree. It was questioned if people at large would still call Windows Windows if Notepad, Explorer, Paint, and Internet Explorer were all replaced. In my opinion, save for Explorer, yes, it would still be, in fact it very often is because those programs very often are replaced by people still calling the system Windows. I can't quantify this precisely but I believe that what the majority are, when speaking to concepts like Windows or operating systems in general, referring to the system that defines how you run software and what software you can run. Therefore it provides program launching and hardware abstraction (including multitasking). This also implies some user interface method for running programs and managing files, which historically was delegated to command shells but now more often refers to GUIs with window managers and what have you, at least on typical desktop systems. The parts that GNU are most known for are either much less used on Windows, easily and often replaced, or not included at all (gcc/ld for example). The only really strong analog I see is with glibc, and even there that doesn't necessarily apply to all programs.
The whole thing is and always will be a semantics game for what "operating system" means. FSF scoffs at the notion of equivocating operating system with kernel, although that's what computer science students are usually taught in operating systems classes (please tell me if you were in an OS class that turned into writing compilers, or even more than a very bare bones shell). Others will scoff at the notion that GNU's "system" is anything resembling what a user expects out of a modern OS. The argument can go on forever. There's really no absolute or empirical basis to decide a winner.
Sadly FSF is
very caught up in arguing semantics and declaring authority over many words and phrases.