C says "A is lying" and D says "C is telling the truth", so C and D are either both true or both false. Also, if C is true then A lies, and if C is false then A is truthful. Exactly two statements are true.
C and D true: A and B lie. A lying means the culprit is not B or C. B lying means the culprit is not D. So the culprit is A.
C and D false: A is truthful, and exactly one more (B) must be true. If B is true the culprit is D, but if A is true the culprit is B or C. Contradiction.
So the culprit is A.
Diagram of the solution
Key Points
Sort out how the statements depend on each other
Split into cases and eliminate the contradiction
Use "exactly two are true"
Why people get fooled
People consider each statement separately instead of finding how the statements relate.