Según tu código con el header al principio el juego de caracteres de la pagina es utf-8 entonces no debería haber problema, pero para detectar la codificación de una cadena usa esta función:
Otra posible solución es mirar si puedes insertar los caracteres especiales reemplazándolos por el código equivalente de html:
ñ = ñ
á = á
é = é
í = í
ó = ó
ú = ú
Si te resulta bien la prueba, entonces debes usar una función PHP para reemplazar los caracteres en tu cadena de texto, por ejemplo algo así:
Código PHP:
Ver original$usu = $_POST['usuario'];
//función que busca todas las "ñ" en la cadena $usu y las reemplaza por "ñ"
espero sirva alguna de esas posibles soluciones, o sino avisas para seguir mirando.