Having absolutely no authority or experience in this area, I am going to help you.
I would start by matching the proportions with a certain tolerance if you are not comparing cropped sections of images, which will make work a little more difficult.
Then I scan the pixels for the areas of similarity, without accuracy, the tolerance level is again needed. Then, when the area is similar, run in a straight line, comparing one with the other, and find another similar colored area. Black and white will be harder.
If you get hit, you will have two areas in a row with similar images. With two points, you have a link of length between them, and now you can see what scaling can be. You can also scale images at first, but this does not take into account cropped sections where aspects do not match.
Now select a random point in the original image and get the color information. Then, using the scale factor, find the same random point in another image and see if the color is checked. Do this several times with random dots. If many of them are similar, it is rather a copy.
Then you can mark it for further, more intensive processor verification. Either a pixel-by-pixel comparison, or something else.
I know that Microsoft (Photosynth) uses filters such as the "outline" (the look of the material in Photoshop) to remove the colors of the images and leave only square lines that leave only the "components" of the image to match (they correspond to the borders and overlapping).
For speed, I would break the problem into pieces and really think about how people decide that the two photos are similar. For a non-speedy, comprehensive color comparison, you will probably get there.
In short:
If a hole punched a piece of paper at random 4 times, then put it on two photographs, just seeing that the colors passing through you can determine if they are a likely copy and need additional verification.