Most code distributed under the second version of the GPL contains a clause stating that it’s distributed under version 2, or any later version, at the user’s choice. This means that anyone with a copy of code licensed with this clause can move it to version 3.
One notable Free Software project, however, doesn’t include this clause in its license: Linux. Components of the Linux kernel are distributed under a variety of different licenses, ranging from public domain to GPL. The entire work, however, is licensed under version 2 of the GPL, and many parts don’t have the exception. This setup makes it very difficult, even theoretically, to move Linux to the new version of the GPL. The GPL is forward-compatible only; GPLv3 code cannot be distributed in a GPLv2 program, due to the additional restrictions imposed by the new version. This means that the Linux kernel cannot even accept GPLv3 contributions without an explicit exemption for the kernel. (But this doesn’t appear to be a problem, since Linus Torvalds has already stated that he doesn’t intend to move anything to the new version.)