=== modified file 'includes/form.inc'
--- includes/form.inc	
+++ includes/form.inc	
@@ -201,7 +201,8 @@ function _form_validate($elements, $form
       // An empty textfield returns '' so we use empty(). An empty checkbox
       // and a textfield could return '0' and empty('0') returns TRUE so we
       // need a special check for the '0' string.
-      if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') {
+      // Also, file elements are skipped here.
+      if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0' && $elements['#type'] != 'file') {
         form_error($elements, t('%name field is required.', array('%name' => $elements['#title'])));
       }
 
