1) Implement things to do once the main storyline is complete. The game shouldn't end at that point. Imagine World of Warcraft ending with nothing to do once you hit level 60. Imagine Starcraft 2 having only the campaign missions in it. Ideally, a game should implement things to do with the character you took through the storyline such that you can continue to play with that character and continue to be challenged (or even increase the challenge). The Inotia series does this really well. This is also what made Final Fantasy 7 probably the most loved game in that series. Anyone remember raising and breeding Chocobos up to the gold one to go get Knights of the Round materia? That's what made the game amazing - all the stuff you could do after the main storyline finished.
2) Implement difficult to achieve upgrade systems. This might include rare drops for the best loot. But think a little ahead. How about rare drops for item enhancement scrolls or gems. How about rare book drops for new abilities or ability improvements? Make it difficult to get the best of the best. I don't want to be handed my top-tier loot on a plate from trash mob drops or random chests. That doesn't feel very rewarding.
3) Implement achievements. Implement lots of them. Implement difficult ones. Implement insane ones. This goes without saying, really. Many people try to get all of the achievements in a game. This is a simple idea that a lot of games implement already (for instance, the one, two, three stars system that lots of puzzle games have or game center/open feint integration).
4) Implement unlockables. Make some difficult to get. Tie unlockables to difficult achievements. Make the unlockables so worth getting that people will get them. Make long and difficult attunement chains to access new areas. Unlockable stuff is what gives a lot of games on other devices (console games, etc.) their long play time. For instance, I consider "Everybody's Golf" on the PSP to be one of the best games on that platform simply because I spent months unlocking all the courses, characters, clubs, clothes, etc. Simply unlocking a different skin for your main character isn't really as good of an incentive as unlocking a new level or an item that improves the strength of your character. Unlockables have to be worth getting and not just fluff.
5) Implement statistics. And make them visible. They are as much bragging rights as achievements. Statistics are cool, if they're done right, and are really easy to implement if you've designed your game with them in mind. Time spent playing, largest crit, monsters killed, longest combo, etc. For some more involved games, you might want to implement stats that players can track while experimenting with different equipment setups. DPS, crit %, average damage per hit, average heal done, etc. If you can make some statistics shareable online, they definitely become more valuable.
6) Implement randomness. Randomly generate the world. Randomly generate items. Do enhancements systems based on luck. Think rogue-like games or something like Torchlight. Randomness allows you to build essentially infinite dungeons. For randomness on enchantments, look at Torchlight's or Inotia's enchantment systems. These "gambling" style item upgrade systems allow for complete uniqueness between players (and in-turn bragging rights).
7) Make your game endless. Don't implement a level cap. Allow the possibility, however expensive, to keep adding another plus one to that item. Auto generate new areas as needed. This reflects on the previous point, but in a different way. With some simple maths, you can scale the stats of enemies and in turn the stats on drops as far as you want. If designed correctly, you don't need to even implement level caps (just scale the XP needed to get to the next level such that it ends up taking longer and longer to get another level). Your game world could have a series of dungeons that are only accessible after the character has reached a certain level or completed the previous one, or done some attunement quest. For item enhancements, just make it more and more expensive (in terms of time invested) for each additional +1. If a player wants to grind to level 150 and get +30 to their sword, no matter how long it takes, they should be able to do that.
8) Implement difficult crafting. Rare recipes that need lots of expensive or rare ingredients. Even rarer recipes that need the previous crafted item as a precursor. Make some of the best stuff crafted. Crafting, as long as you can implement the storage system properly, is a nice time sink. Make sure that reagents stack in an effective way (there's no need to cap the stacking number of a reagent, for instance). Make some reagents difficult to get (rare chance to drop from a difficult boss). There's nothing more satisfying than finally assembling a truly awesome new sword after hours and hours of fetching the reagents needed, and there's nothing more satisfying than finding that super-rare recipe drop.
9) Open harder modes that you play with the same character you just finished the game with. And an even harder one after that. Remember that a lot of scaling is just mob health and damage output. If your game has a finite story line and end point and you don't want to extend play past that, allow your character that you just finished the game with to go back out, from the beginning, against even harder mobs, wearing the gear they just spend a lot of time collecting and improving.
10) Implement discovery. For instance, don't document every recipe, drop, enemy and location. Don't make the game linear. If I know what the best stuff in the game is, sure it allows me to know when I've finished the game, but it also lets me know that the game has a defined end point. I hate linear games that give out the gear needed as I go - it doesn't feel like discovery or accomplishment. I should have to re-visit old areas to find new things. It shouldn't matter what order I do things in, aside from the main story quests, but I should have to do a certain amount of side questing to move on. I want to see new monsters later in the game, or at least new abilities on higher level versions of lower-level monsters.
Think of an XP bar in an RPG. The bar goes up and eventually fills. Then you gain a level, the bar empties and you have to refill it again. Many many gamers just want to fill bars like this. Whether it be levels, ranks, reputation, ladders or whatever, they just want a number that they can make go up. The more of these bars you can add to your game, the more engaging it will be for gamers. This is where companies like Blizzard are so successful. You don't need to be a rocket scientist to add these to your game.