Facebook uses some kind of hidden spam protection, if you look at the source of the registration form, you will see things like:
class="hidden_elem"><div class="fsl fwb">Security Check</div>This is a standard security test that we use to prevent spammers from creating fake accounts and spamming users.
so the capture becomes visible when javascript thinks you're a bot.
Where are several ways to make it harder for bots to complete registration without capture, things like the time it takes to fill out a form, ect event triggers. also random values based on the session in the form (for direct forward views without loading the form)
also some people use hidden form elements with common names, such as "email", which are invisible in css, but simple simple bots will try to fill in all form fields, and so you can block them if this hidden element matters
twitter and fb spend a lot of time developing tags to block spammers. I do not think that they will make it publicly available, as this will counteract the product to combat spammers.
But you can download all client-side javascripts from fb or twitter and study them if you want, because most of the protection will be performed inside the client, and not on the server.
the server can only give out some random session variable, check the correct headers in the request, the total time, etc. its really limited.
some sites also use ajax exchanges between the server and the client when the user fills out the form, basically just to make it more difficult for bot developers to make simulated fake data exchanges.
In any case, unfortunately, where there is no simple solution for decent protection, simply without captcha or any issue.
also, for the “Send” button, you can use the image map instead of the button, you can dynamically create a large image with the submit botton image drawn on it in an arbitrary position, using things like GDI in PHP, and use css to display only part of this images using the actall button, and on the server side - to check the position of X and Y where the mouse was clicked, it will be difficult for the bots to smash. If they do not use real browsers and simply emulate a keyboard and mouse. In any case, as I said, unfortunately, where there is no simple solution.