Do you need to detect ANY change?
You can use hook with few changes;
http://msdn.microsoft.com/en-us/library/ms644991%28VS.85%29.aspx (ShellProc callback function)
it will notify you about if some window moved, if something was redrawn. I am not sure how useful it will be to you, but you can check it out.
There is also more ways: How to detect when window content has changed
If you only need the information that if the content has changed or not, possibily do the processing on "another computer".
1) Set up socket connection
2) Make eachother communicate
3) Now the actual code should be done in Win32(C++) for best performance. However you can do it with C#. Just google for snapshotting in C# and you should find something.
4) To actually perform comparision, there are many ways. One way is pixel by pixel comparasion with last picture. Split image into COMPUTER_PROCESSORS-1 threads and compare pixels.
Alternatively you can run use GPU shaders which might make it faster than CPU approach.