Impossible to say from the info given. Unless there is a bug someone else knows about. if $_FILES['image_file']['name'] exists the tmp_name should too. The parts if the FILES array are created at the same time. So it's all or nothing. It suggests something is screwy with your code. If larger files sizes are successfully uploading then the server config might not be the problem.
Debug by first turning up error_reporting to E_ALL and print_r() the FILES array at the top of the upload scripts action/landing page to see what you get from the server.
Anti Linux rants are usually the result of a lack of Linux experience, while anti Windows rants are usually a result of a lot of Windows experience.