I watched an interesting Google Talk video (warning about an hour of your time) about Gamification of whatever you are doing.
It's clear that the StackExchange set of sites employ quite a few of these principles. There's something compelling about making work fun, but I wonder how many problem domains can incorporate these ideas? They definitely apply to social applications, but is that all? The concept of a virtual loyalty program is also quite compelling.
Short description of Gamification:
There is a system of scoring and reward. For example, Reputation in StackExchange is a type of scoring. Badges are a type of reward. The additional priviledges you gain as your reputation goes up are also a type of reward.
An example of a loyalty program with no real redemption would be a promotion that a convenience store did a while back where you buy their products and get FarmVille credits in return. No real money or goods exchange hands, and the costs to the retailer are minimal at best. Yet it brings in real money for these virtual paybacks.
Shameless use of JohnL's link: http://en.wikipedia.org/wiki/Gamification
NOTE: The speaker refers to four classes of users which seem to have become the archetypes. They are Achievers, Socializer, Explorer, and Killers. The Achievers would most likely apply to all of us programmers--we like to get things done. Apparently 80% of people are socializers and like light, non-confrontational interactions. Explorers go to every corner of a game/application to discover whatever easter eggs and hidden features they can. Killers not only want to win, they want you to lose and get praise/status for beating you.