I never really looked into this, but I think there are several applications available that can create "byte patcher" packages; since they only contain the parts of the new file which are different from the previous version, their size can be a fraction of the whole file to be patched.
It would remain to be seen how well could this be applied to image files which may completely change from version to version due to the internal data compression of the image format itself.