En realidad, acabo de publicar esto:problema de codificación de consultas php mysql
Lo que suelo encontrar que soluciona muchas cosas es;
mysql_query("SET NAMES 'utf8'");
Antes de realizar cualquier consulta.
La documentación recomienda que use mysql_set_charset
pero a menudo veo que falta esa función.
if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}