Ok. I run a major forum (280,000+ visitors a month), and we get very little spam.
Simple technical changes can fix it.
Most important rule. Make spammer links have no value. Ensure that every external link is rewritten with REL="NOFOLLOW" added to it.
Many spam scripts automate posting to sites - they look for registration forms and fill them in with details. My forms have used a very simple trick which doesn't need a CAPTCHA and catches almost all of these automated tricks.
Add some hidden fields with names that spammer scripts will think are important to complete, such as "subject" "postcode" "country" "email2" "address" or similar... These fields have a style of "display: none" so they are not seen by legitimate users, but spammer scripts will see them and be too tempted to fill them with something.
Your registration script looks for these values, if any are filled in, it silently rejects the registration.
JoF - If you don't know how to make these changes, ask someone who does. it's important, especially the REL="nofollow" one...