Har faktiskt precis postat det här - php mysql frågekodningsproblem
Det jag brukar hitta löser saker mycket är;
mysql_query("SET NAMES 'utf8'");
Innan några frågor utförs.
Dokumentationen rekommenderar att du använder mysql_set_charset
men jag ser ofta att den funktionen saknas.
if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}