Te explico, todo este tipo de validaciones las estoy haciendo usando Ajax+php por la siguiente razón.
Supongamos que en nuestro js, tenemos algo como
var ext_validas = /\.(pdf|gif|jpg|png)$/i.test(nombre_archivo);
ó algún otro método que indique las extensiones válidas, ahora imaginate que antes de hacer el submit, el usuario utiliza cualquiera de las herramientas de desarrollo que hoy en día utilizan los navegadores, y, malintecionadamente edita tu código por
var ext_validas = /\.(pdf|gif|jpg|png|zip|exe)$/i.test(nombre_archivo);
tan solo con eso ya está violando tus reglas.
Por eso lo definitivo es validar en php, y si se justifica, utilizar ajax para hacer el post y mostrar los mensajes de error.
Agregar un captcha bacaso en sesiones también aumenta tu seguridad
A propósito, estuve analizando esto
http://davidwalsh.name/multiple-file-upload
y puede que sirva a lo que necesitas.
Saludos