Efectivamente, tienes que usar mysql_real_escape_string() a partir de PHP 5.3 para evitar los ataques SQL injection.
No sé si será tu problema, pero en el manual de PHP en la función mysql_real_escape_string() explican que si tu server tiene habilitada magic_quotes_gpc, tienes que hacer antes de mysql_real_escape_string() una llamada a stripslashes(), para evitar ese escape doble de los caracteres que comentas.
Puedes saber si tienes activado el flag magic_quotes_gpc haciendo un phpinfo().
El código para escapar un string te quedaría así:
$cadena = mysql_real_escape_string (stripslashes($_POST['variablecadena']));