Index: wp-includes/functions-post.php
===================================================================
--- wp-includes/functions-post.php	(revision 2557)
+++ wp-includes/functions-post.php	(working copy)
@@ -495,6 +495,13 @@
 		}
 	}
 
+	// Simple duplicate check
+	$dupe = "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = '$comment_post_ID' AND ( comment_author = '$author' ";
+	if ( $email ) $dupe .= "OR comment_author_email = '$email' ";
+	$dupe .= ") AND comment_content = '$comment' LIMIT 1";
+	if ( $wpdb->get_var($dupe) )
+		die( __('Duplicate comment detected; it looks as though you\'ve already said that!') );
+
 	if ( check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) )
 		$approved = 1;
 	else
@@ -596,4 +603,4 @@
 	return $wpdb->query("UPDATE $wpdb->posts SET pinged = '$new' WHERE ID = $post_id");
 }
 
-?>
\ No newline at end of file
+?>
