One reason for this, other than the ones already mentioned in the numerous stackexchange posts, can be having an incorrectly referenced resource loading on the current page, which causes the regeneration of the captcha in session, without refreshing the frontend shown captcha image.
For example, I was having a JS file referencing an image, which was causing an additional request to /customer/account/forgotpassword with the following request path: /customer/account/forgotpassword/images/black.png