I recently took the plunge. I had been using e-TextEditor for everything but .NET, and VS for .NET. Now I'm using gVim for the majority of my editing for all languages I am working in. However, I still use Visual Studio with ReSharper for certain things: debugging, intellisense (only when I'm stuck; I'm trying not to rely on it much. you can also use vim plugins or create your own to let you quickly jump to MSDN and find something), and editing project/solution configuration.
Alternatively, you could use ViEmu (emulator plugin for VS, amongst other MS things), but I like the split buffers so I haven't gone down that path.
In summary, I don't think it's an all or nothing deal. You should use the best tools for the job. I think using Vim will make you more productive for plenty, but not all tasks.
I'd second ViEmu. The price is a little steep (or was three or four years ago), but I used it through the trial and it was pretty comfortable.
These days I do a lot of my C# coding in Visual Studio, but have a shortcut key to open the current file in GVim to do heavy lifting. For what it's worth, to do that, I added gvim as an external tool with the arguments:
Grandparent was correct. Vim's basic completion is "similar words in the current file" (plus some other things), but omnicomplete is an arbitrary algorithm that can get pretty fancy. For example, in Ruby, omnicomplete on 3.14.tr will include truncate, while omnicomplete on [[1, 2]].tr will include transpose.
omnicompletion, by default, completes against words in any file currently open in any buffer. But it's also now pretty programmable, though I don't I currently use any of the languages that have good support built out for them.
Alternatively, you could use ViEmu (emulator plugin for VS, amongst other MS things), but I like the split buffers so I haven't gone down that path.
In summary, I don't think it's an all or nothing deal. You should use the best tools for the job. I think using Vim will make you more productive for plenty, but not all tasks.