Update: It appears to me that it's not specifically due to the extra content after the closing html tag, but something to do with WP Super Cache using the PHP fucntion register_shutdown_function() to call wpcache_broken_message() in advanced-cache.php. (which in the end, does add extra content after the closing html tag)
This is definitely an edge case and may or may not be the cause of your problem. All I can say is that it was in my case.
If this doesn't remedy your situation, I can recommend you try one of a few things.
1) See what the error message is (if the spinner won't go away, then the response had an error).
In wp-content/plugins/contact-form-7/includes/js/scripts.js, try changing:
error: function(xhr, status, error, $form) {
var e = $('<div class="ajax-error"></div>').text(error.m essage);
$form.after(e);
}
to
error: function(xhr, status, error, $form) {
alert(error.message);
var e = $('<div class="ajax-error"></div>').text(error.m essage);
$form.after(e);
}
If you get an error like: "JSON.parse: unexpected non-whitespace character after JSON data"
then use Firebug (or similar) to take a peek at the response from the Ajax call.
In my case, I saw:
{"mailSent":true,"into":"#wpcf7-f1994-p1944-o1","captcha":null,"message":"Your message was sent successfully. Thanks."}<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
which made it obvious that there was extra characters after the JSON.