HTTP clients can easily be imitated, so cookies, forms and so on would probably not help you much, maybe a day or two. If you add some of the tips, like random values at the signup page, the guy can just make a client that fetches the page and get all the variables he needs to send. Thats simple.
To completely be secure from this kind of attack, you must make a feature that simply cannot be duplicated easily in a bot. Altavista solved this by displaying graphical letters which the user needs to input before they can submit a page. A simple bot cannot detect that.
Combined with sessions that track the time difference the client uses between pages, you can easily detect bots. A normal client uses several seconds normally, especially to fill out a form. Check for the time the client use, and you'll get rid of the problem.
just my 2 cents,
morty