El problema parece ser que estás usando mal los selectores,
#header se refiere a un elemento cualquiera con id igual a "header", y según tu código tiene que ser
header a secas.
Ahora, si estás usando HTML5 usa semántica, los menús se pueden hacer con la etiqueta nav y en cada enlace no pongas imágenes, usa una imagen de fondo y si es necesario oculta el texto.
Ten en cuenta que con ese código le estás aplicando el efecto a todo el menú no a los enlaces.
Saludos