There may be some confusion about the definition of SNR.
In some applications you may be interested in reducing the ratio of the signal power spectral density to noise power spectral density. "SNR" in this case refers to the ratio of the signal to noise power when you measure both over the same bandwidth. In these cases, as Juancho pointed out, direct-sequence spread spectrum is a classical technique. It deliberately spreads the signal power over a wider bandwidth.
The SNR used in the Shannon-Hartley Theorem refers to the SNR per channel usage. To oversimplify the matter, it refers to the SNR per symbol after you demodulate the signal. Spread spectrum does not decrease the SNR needed to achieve a given data rate; it just spreads the signal power in the SNR calculation over a wider bandwidth. It is true that you can communicate with SNR lower than 0 dB: one typically does so in a practical environment using simple modulation (e.g., BPSK, QPSK) and a low code rate with a strong-performing code. Whether one spreads the signal or not is a separate decision.