I'm running the game on a gtx 295, and was using Nvidia's latest beta driver, version 267.24, along with their SLI profile update. I only updated to this version so I could make use of both of my GPU's while playing the multiplayer demo. I've actually been using a much older driver because newer versions have caused some major problems for me while playing the original Crysis.
Anyways, I was able to get Crysis 2 running properly on both my GPU's using the latest drivers, but then discovered the flickering water problems. This occurred on both the multiplayer demo and on the retail version which I now have. After that, I just decided to roll back to my previous driver, because it was useless to me to have both GPU's working, only to have constant flickering on every water surface I went through (turns out there's a lot of water you have to walk through in the game!).
Soon after, I was reading others say they fixed it by renaming the Crysis 2 executable to "bioshock.exe" or some other exe that could be recognized by their driver. However, they also said it caused a drop in their frame rates. Well, I figured this would probably work best if I renamed Crysis 2 to "Crysis.exe" so that the driver would use the original Crysis profile, which I figured would be the best possible match. Just seemed like a no-brainer.
After doing that, the flickering went away completely, and I didn't have any drop in performance. I figured since I got this to work on my older driver, it should be possible for it to work with the newest driver version. I haven't tested it myself, but I'm pretty sure it would work. As of the time of this posting, Nvida have yet to release a newer driver, which I assume should fix the problem for Nvidia users. Until then, you might want to try the method I used.