[eluser]Nathan Moore[/eluser]
First of all, double check the form in your view. Make sure that the form enctype is set to "multipart/form-data" Or, if you are utilizing the form helper, make sure you are opening your form with form_open_multipart(). If your $_FILES array is empty, verify that all the code is correct in the view.
As for the validation, you can tie in a custom validation method to check to see if a file has been uploaded.
Set your normal validation rules, and then create a custom method for "userfile" that will check to see if $_FILES['userfile']['size'] is greater than 0. If it is, a file has been uploaded and you can return true and proceed with the rest of your process. If not, return false, and the validation class will take care of the rest and serve up your form again.
This is the most efficient way to validate an upload. I hope that helps.