Programming contests are extremely fun. Here are some websites worth checking out.

Warning, this page hasn't been updated in ages, as I pretty much stopped doing competitions.
Don't be surprised if most of the links are broken.
Nowadays I recommend IPSC, NCPC, Project Euler, Google code jam and hacker.org.

Algorithm contests:

TopCoder - huge problem archive, contests hosted regularly and tournaments held yearly
Codeforces - contests held regularly
UVa contests - ACM-style contests
IPSC (Internet Problem Solving Contest) - yearly contest with some unusual problems
Google Code Jam - yearly tournament
USA Computing Olympiad - IOI-style contests held mostly during the winter

Marathon contests: (longer contests)

TopCoder - they have marathon contests as well
Virtual source programming contests
Al Zimmermann's programming contests
Programmer of the month (not currently active)

Online judges:

UVa online judge - huge problem archive for UVa contests
Sphere online judge - hard problems, fantastic language support
Saratov State University online judge
Timus online judge
Gepwnage online judge - has tasks from BAPC
Peking University online judge
TJU online judge - can host virtual contests here
Zhejiang University online judge
Zhejiang Sci-Tech University judge online
Hangzhou Dianzi University online judge
Hunan University online judge
Open Science Community & online judge
Codechef
Codercharts
C golf

Problem solving sites:

Project Euler - math problems
hacker.org - problems, automatic game solving, bots
Geek challenges
Mathalon

Learning resources:

USACO training program gateway
Topcoder's algorithm tutorials

Resources for specific sites (mostly for UVa)

UVa toolkit - output generator for many UVa problems
uHunt - UVa stats
otinn TopCoder stats
Methods to solve - Hints for UVa problems (not updated for years)
Algorithmist - Description of algorithms and hints for online judge problems

Other stuff:

My own page with training tips for people preparing for NCPC, IDI Open, NWERC etc.

NTNU students should also check out the Programming playground.

My old list of programming contests, beware of broken links.

More to be added later.