I just encountered this same problem, and solved it using advice I found here.
The main two potential causes, it seems are:
One of the active plugins (or the theme’s functions.php file) produces unexpected output, causing a “headers already sent” warning and consequently preventing WordPress from setting the test cookie.
UTF-8 byte order mark in wp-config.php (or theme’s functions.php file) has the same effect as above.
The solutions for these issues are:
In case of a plugin issue, the solution would be to rename its folder via FTP. In case of a UTF-8 byte order mark issue, the solution is to re-save the file without it. Notepad++ has an option for that: “Convert to UTF-8 without BOM”.
In my case, per the suggestion above, I basically used my FTP to systematically rename each of my plug-ins (to force it to deactivate), then refreshed the login page after each plug folder name change to see if the error disappeared. After isolating which plug-in caused the error, I was able to log in, and deleted my current installation of the plug-in. I then re-installed the same plug-in, and it worked without a hitch.
I hope that helps!