No se trata de ir "probando" .. todo lo que te he comentado lo tienes en la documentación oficial de PHP al respecto:
http://www.php.net/manual/en/features.file-upload.php
Si ves "variables" puedes ver su contenido para observar que es lo que llega por ellas .. Por ejemplo:
print_r($_FILES);
Pero, el problema parece estar en los permisos de escritura de tu directorio donde dejas o vas a dejar tus archivos .. Ese directorio tiene que tener permisos (CHMOD por tu cliente de FTP que uses) 0666 o similar.
(no uses tu último código .. no tiene sentido si ves que es lo que devuelve la variable $_FILES['userfile']['tmp_name'] ...)
Un saludo,