I am posting this because I spent a couple of hours trying to fix a fault like this on Friday night. I was moving a file to my USB hard drive and windows reported that the device was full. I did a check and the drive was only quarter full. I checked the disk for errors and there were no problems. It had not gone read only, and there were no errors. It also did not need defragmented and the size was reporting correctly in My Computer and Tree Size (a very useful free utility).
After much faffing around I finally discovered that Windows was misreporting the fault. The drive was not full - the file was too large for the FAT 32 file system on the drive (it was a 4.2 GB disk image and the file size limit is 4 GB). All my machines are formatted NTFS which has no file size limit. I have not used FAT 32 for a long time so the USB drive must have been formatted that way out of the box without me noticing.
So the moral of the story is: don't take Microsoft's error messages at face value. A lot of time would have been saved if Windows had reported the error as "file too large for FAT 32 formatted disk".