If I have a TrueCrypt container with a capacity of 2 GB which I use to fill 1 GB with real, hidden data, and leave the other GB for decoy data, then if I need to reveal a password and give out the decoy password, can't the attacker simply fill the container with junk until it's full, then compare the full size with the total container size and determine that if the full size is smaller than the container size, then it must have hidden data?
No, but it will overwrite your hidden volume.
The hidden OS doesn't signal to the "primary" OS that there is any hidden volume. Instead it just looks like blank, free space available for the taking. A FAT filesystem won't use space at the end of the drive until it needs to, but if it gets to that, it will.
So you still have plausible deniability, but your encrypted volume is now completely overwritten.