We all bitch about the repetitive nature of MMO's, how we have to grind the same old mobs and areas and whatnot over and over and over again. Everybody talks about which carrots should be dangled in front of which player's faces to make them do these things a bit longer.
What is wrong with this picture? Why do players have to be given shiny items in exchange for playing your game? Isn't your game fun?
Well, in a way, it is. The first time you do it. The first time you use a skill, use a combination of skills, kill a particular enemy, solve a quest, clear a dungeon, defeat a boss, it's fun. It's new, it's unexpected, it was probably a nice scripted little encounter. But what happens when the player runs out of nice scripted little encounters? What happens when they reach the end of the story? The game has lost its appeal, and the player moves on to another game. Unless they can....
1) Play co-op with friends. It's fun. All MMO's have this one down, don't they? Oh wait, my friend who just started playing can't play with me because he is some noob level. And the LFG system sucks, so I can't find anybody new to play with either.
2) Play PvP. Yay PvP, players make the content for you! Again, most MMO's have this don't they?
Except, oops, we included a massive level and item grind to keep players playing to make up for our lack of features, which means nobody who likes PvP would want to PvP, which means many people leave the game after finishing the story anyway. Or, oops, again, we have a piss poor LFG system, so nobody can PvP even if they wanted to.
3) Complete the game on a harder difficulty. Challenge makes games fun.
4) Achieve a high score. Or, in its modern variation, achievements. Basically, any collection of ASCII characters that recognizes someone who is really good at playing the game, so that the player can feel as though their e-peen has just risen in size. Again, the challenge of getting the best achievements or the high score leads to fun.
Caveat to that: Saying "yay I've grinded 10,000 goblins" is not fun. Make it something challenging, not something time consuming.
5) Try different classes. Playing through the game with a different class gives the game heaps of replayability... you can re-use the same areas and storyline, yay!
Except.... Oops, I can't play through the game with this new class. Because I'm a healer and I can't kill anything by myself. Or I'm a tank and I do no damage. Or I'm a nuker and I have to pull stuff one at a time or risk being overwhelmed.
For solutions to this problem, see Diablo 2 (7 classes, all do plenty of damage and have solo survivability, but in groups can fall into various group-based roles to encourage teamwork), or Guild Wars (henchmen allow any class to solo).
The other setback is that a veteran player may not want to take forever to go through all that new content. In Guild Wars I can try out a max level character whenever I want to, and in Diablo 2 it would take a day tops to get rushed through the game to max "ish" level to try out a new spec.
All other online RPG's, go home, you failed on this one.
6) Generate their own content. Pfff nobody would ever play this would they? Nobody ever played Counterstrike, or Team Fortress 2, or Enemy Territory, or Defense of the Ancients did they?
Oh wait, they did. Now, releasing your source code and all is nice, but what's even better is cleaning up your level-making GUI a little and, boom, anyone can make their own stuff. Introduce an in-game rating system and you have yourself a bunch of happy little monkeys.
Reason this didn't work that well for Neverwinter Nights: every server had their own 'house rules' which players can't be bothered learning, sizable download just to try out each world, no in-game rating system, people have to provide their own servers which means the really popular worlds couldn't gain in popularity, etc. Avoid these mistakes and you're golden.
It doesn't have to be whole levels either. We've all seen the phenomenon that is Spore.
7) Leave for a while, and play casually. Seriously, everybody gets sick of playing the same game over and over. They might take a break for a couple of months. When they come back, if they've fallen behind the raid grind, or an expansion has come out that raises the level cap without adding a TON of new functionality for your character to acquire, or if it's impossible to just hop on quickly every now and then and do something fun, you have failed.
That last point is important. In order to be able to hop on and play every now and then, players need instant travel, or instances they can enter from wherever they like (yes, WAR scenarios are good in this respect). They don't want to log on and watch a great big winged beast that they can't control flap around for 15 minutes and then spam LFG for an hour to do what they wanted to do.
However, in lieu of all this stuff that is quite easy to implement, MMO designers instead.... make it take longer to do stuff. Make you spend months leveling up, doing the same things over and over again. Make it take forever for you to travel anywhere (if a player wants to take in the scenery, they will. Let me just get to where I want to go, thanks). Making it necessary to get a large number of people together to do particular content, and then making it really difficult to get a large number of people together. Etc.
The focus is not on designing a good game, not to let you have fun, but to make the company a lot of money. Wake up and smell the roses people! It's only when crap games like these stop attracting large amounts of money that developers will be forced to make MMO's that don't suck.