Joe Duffy posts a great check-list for writing good threaded code. It's mostly aimed at library writers in .NET, but a lot of it is more general. I've been waiting for something like this for ages.
"Concurrency and the impact on reusable libraries"