O que eu costumo achar que resolve muito as coisas é;
mysql_query("SET NAMES 'utf8'");
Antes de qualquer consulta ser realizada.
A documentação recomenda que você use
mysql_set_charset
mas muitas vezes vejo essa função ausente. if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}