File Upload visible in $_FILES but drupal file functions create empty file
Drupal forms which include a file upload field must also set the encoding type to multipart/form-data.

  $form['#attributes']['enctype'] = 'multipart/form-data';


Reference: Drupal.org: Uploading Files



There is a good checklist for debugging your situation here:

https://stackoverflow.com/questions/3586919/why-would-files-be-empty-when-uploading-files-to-php

Not mentioned in the checklist there is that Suhosin, a commonly installed extension, can empty some submitted values. As well as following the checklist in the linked question, check to see if you have Suhosin installed - if so then you may be 

One thing I'd try straight away is whether uploading a very small file triggers this bug. If so that might suggest that you're hitting a limit in PHP's max post data or Suhosin.