IANAL, but the order of creation doesn't matter. If the linking two binaries would be a violation of the GPL, then it is not allowed by the GPL, regardless of which was created first.
Case 1 is addressed by the system library exception, as Michael Burr quoted. Note that it is not time-dependent - if it were not for the system library exception, it would be just as much of a GPL violation to run GPLed code written in 2003 on Windows 98 (which was written before the GPLed code) as it would be to run it on Vista (which was written after the GPLed code).
I agree that case 2 violates the spirit of the GPL, but, as the term is used by the GPL, that NVidia driver is not "linked" with the Linux kernel because it is loaded as a module. You wouldn't be able to distribute a Linux kernel with the non-Free NVidia binary statically linked into it, but who distributes statically-linked kernels these days anyhow?