The learning curve of vim is indeed steep, but it's been incredibly well worth it for me. The key thing to remember about vim is that it's very much oriented towards
editing text, not so much creating it. (In general, writing lots of text is easy and there are few differences from editor to editor.)
But fast editing using only the keyboard is where vim really shines. In my experience, the biggest wins are the uniform command structures and the huge number of movement options. Since most commands in vim take the form of <number-of-repititions><command><movement area>, you need master only the various movement types to effectively start using a large number of commands. Movement areas (called "motions") can be word-by-word, long jumps within a sentence, going between paragraphs, matching code structures (braces/parenthesis/functions/etc.), etc. Learning these motions lets you quickly jump to exactly where you need to, resulting in super-fast editing.
Of course, there are all the usual search-and-replace type of commands, multiple buffers/screens/tabs, very easy macro recording and playback, and plugins for project management, source control, etc., but none of these particularly distinguish vim from other good editors.
The one 'weakness' of vim is that it's much less of an "OS" than editors like emacs. Instead, it has a few well-chosen external commands that are built-in (grep, make, etc.), and otherwise lets you run shell commands directly (piping input into the current file, if wanted) for everything else. This, IMO, is more in keeping with the unix mentality of piping together lots of small programs that each do one thing well. So for example, you can sort and keep only unique lines in a text file by simply selecting them and running the standard 'sort' and 'uniq' commands (exactly as you would do on the command line). Your personal preference is what decides whether this is a weakness (as emacs users would probably feel) or a strength (as I and many other vim users feel).
Finally, I would recommend learning vim as you would learn a new language: use it all the time and slowly pick up new features (not all at once) until you become proficient. I use it not only as my editor for all text and programming on my machine, but also for editing text boxes in firefox and editing emails in thunderbird. See http://news.ycombinator.com/item?id=152170 for more information.