Found this bug when I was in a project using Blogbuzz as a base theme.
The "add another item" button will just clear all items that contained selected files to upload with
blank items.

it was caused by the following codes in the template.php file

// Override theme_button 
function phptemplate_button($element) { 
  // Make sure not to overwrite classes. 
  if (isset($element['#attributes']['class'])) { 
    $element['#attributes']['class'] = 'form-'. $element['#button_type'] .' '. $element['#attributes']['class']; 
  }
  else { 
    $element['#attributes']['class'] = 'form-'. $element['#button_type']; 
  } 
  // We here wrap the output with a couple span tags 
  return '<span class="button"><input type="submit" '. (empty($element['#name']) ? '' : 'name="'. $element['#name'] .'" ') .'id="'. $element['#id'].'" value="'. check_plain($element['#value']) .'" '. drupal_attributes($element['#attributes']) ." /></span>\n"; 
}

The problem was caused by

return '<span class="button"><input type="submit" '. (empty($element['#name']) ? '' : 'name="'. $element['#name'] .'" ') .'id="'. $element['#id'].'" value="'. check_plain($element['#value']) .'" '. drupal_attributes($element['#attributes']) ." /></span>\n";

problem solved after removing <span class="button"> from the beginning and the </span> at the end

so the updated codes are

// Override theme_button 
function phptemplate_button($element) { 
  // Make sure not to overwrite classes. 
  if (isset($element['#attributes']['class'])) { 
    $element['#attributes']['class'] = 'form-'. $element['#button_type'] .' '. $element['#attributes']['class']; 
  }
  else { 
    $element['#attributes']['class'] = 'form-'. $element['#button_type']; 
  } 
  // We here wrap the output with a couple span tags 
  return '<input type="submit" '. (empty($element['#name']) ? '' : 'name="'. $element['#name'] .'" ') .'id="'. $element['#id'].'" value="'. check_plain($element['#value']) .'" '. drupal_attributes($element['#attributes']) ." />\n"; 
}