Stephen Toub wrote a article for MSDN on implementing Human Interactive Proofs (HIPs); I am surprised how many lame implementations I have run across of late. This article provides a pretty reasonable ASP.NET implementation and enough guidance to build a alternate implementation.
Check it out: http://msdn2.microsoft.com/en-us/library/ms972952.aspx