More information? WordPress version? Other plug-ins that may interferer?
Invalid activation key errors can sometimes be fixed by running this query on your DB:
UPDATE wp_users SET user_activation_key = '' WHERE user_activation_key LIKE '%$%'
Be sure to change wp_users to your actual users table if you use a non-default DB prefix.
How does this work? If the user_activation_key field is blank, WP will create a new one that’s not invalid.
How did it get invalid in the first place? I’m not sure how this crops up, but I think it is more likely if you are moving WP DBs from server to server or if you upgraded from an older version of WP that used to have $ in the activation keys.
Hope this helps. (Posting this to a few threads talking about it in case this can help.)