diff -urp filefield/filefield_widget.inc filefield/filefield_widget.inc
--- filefield/filefield_widget.inc	2008-10-31 06:04:07.000000000 +0200
+++ filefield/filefield_widget.inc	2008-11-02 10:48:16.000000000 +0200
@@ -331,7 +331,9 @@ function theme_filefield_widget_item($el
 function filefield_node_form_validate($form, &$form_state) {
   $type = content_types($form['type']['#value']);
   foreach ($type['fields'] as $field_name => $field) {
-    if (!(in_array($field['module'], array('imagefield', 'filefield'))) || !$field['required']) continue;
+    if (!in_array($field['module'], array('imagefield', 'filefield'))) {
+      continue;
+    }
     $empty = $field['module'] .'_content_is_empty';
     $valid = false;
     $total_filesize = 0;
@@ -341,7 +343,7 @@ function filefield_node_form_validate($f
       $total_filesize += (int)$item['filesize'];
     }
 
-    if (!$valid) {
+    if (!$valid && $field['required']) {
       form_set_error($field_name, t('%title field is required.', array('%title' => $field['widget']['label'])));
     }
     $max_filesize = parse_size($field['widget']['max_filesize_per_node']);
