Hello Jason Morehead,
I am sorry to hear you are running into this very odd issue.
So the process completes, to the point that as far as ExpressionEngine is concerned the image is there and available for use, but the actual files are never uploaded to the server.
You have done a great job troubleshooting! Most of the things I would have asked you to do, you have already done.
There is one more thing you can do, this will enable you to better see errors if they are there. To turn debugging on please go to your Control Panel and navigate to Admin->System Administration-> Output and Debugging. Please set the last two settings, which are “Display Output Profiler?” and “Display Template Debugging?”, to yes.
Go through the steps of uploading an image like you have always done. Look at the header and footer of the page through each step and look for errors or anything that does not seem right, like paths that are wrong or php errors.
If that yields nothing of use, then continue on.
If the file is not being written to the filesystem, then I would expect some error is just not where we can see it.
My gut feeling is that we are going to find our answer in the system logs if everything up to this point has not tipped us off to the issue.
Are you able to SSH to your server? (get shell access) If so would you be willing to run a few commands? I can walk you though the steps. I would like to know if the logs mention any errors, like failed writes, a full partition, things of that nature that would show up in the logs.
Another option is to work with your hosting provider and ask them to check your logs while you are uploading an image. A good tech will know which logs to watch and will be able to recognize the errors and fix them in real time.
Let me know how things go. I will be on the look out for your response.
Cheers,