I spent the best part of an evening trying to fix this issue, looking for a major problem when it was actually simple and obvious.

I recently launched a website from dev to live. I gave the client her own login and set her permission to administrator whilst it was in the dev instance (as I planned to then amend the permissions to restrict her view/make life easier etc etc).

The dev instance was uploaded onto a 1&1 unlimited server. The client had been uploading photos fine (as whilst the dev instance was up, she was adding content). She did this for about a month with no issue.

Launched the live site with no issues, advised her of the same login but different domain to access her admin dashboard and suddenly she couldn't upload images.
It was allowing her to go as far as uploading, and whilst she was still logged in as admin they would show that they had uploaded fine, but after logging out / clearing cache / viewing from any other IP these would no longer show, and after logging back into admin they would show as broken thumbnails ( [x] ).

I tested on my end and was confused as when I was logged in as admin, I could easily upload photos and these photos would stay put, after clearing cache/viewing on a different ip etc. The only difference was that I could see my files had downloaded into the selected filepath, where as hers hadn't.

I gave the client the admin logins, tried changing permissions on both SSH and in user permissions but to no avail. Even when she was logged in as me, she couldn't upload any images successfully.

Then I realised that my subdomain folder, of which I had used for the devsite, had all of the uploaded images inside of its /sites/default/files folder path. So basically, even though it was a subdomain and even though my file path was /sites/default/files, for some reason it was still picking up on the development subdomain and sending the files there... so when the livesite went to look for those files, they weren't there. They were in the subdomain folder.

All I did was move my development site folder into another one, so instead of it picking up on the subdomain, it would pick up on just the livesite (as otherwise it would have to search for '../subdomain/sites/default/files' or what not. The only reason I chose to keep the subdomain folder would be as yet another backup... because you can never have too many of those.

This may not be useful and it may be standard to delete subdomain folders right away, but just incase anyone else has had the same problem I figured i'd post it.

:)