CHESS, a project of Microsoft Research. Quoting their site:
CHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs.
Update (9/23/2015): For C, C++, and Go, you can use ThreadSanitizer.