Step 1: Fix the couple.
With only one married pair among four people, and B calling C “my wife” while C calls D “my mother-in-law”, the natural fit is B and C as husband and wife, forming the parent generation, with D as the grandparent and A as the grandchild.
Step 2: Fix D's side of the family.
Try D as B's own parent (making B the blood child of D, and C the one who married into the family). This matches B's claim “D is my father”.
Step 3: Check A's two claims against this tree.
A calls B “my son”, but in this tree B is A's father, so this is false. A calls D “my mother”, but D is A's grandparent, so this is also false. Both of A's lines fail.
Step 4: Check B's two claims.
“C is my wife” is true by the setup. “D is my father” is true by the setup. Both of B's lines hold.
Step 5: Check C's two claims.
“D is my mother-in-law” should really be “father-in-law”, since D (B's father) is male, so this line is false. “A is my daughter” is true, since A is C's own child. One true, one false.
Step 6: Check D's two claims.
“A is my grand-daughter” is true. “B is my daughter-in-law” is false, since B is D's own son, not the in-law; that title belongs to C. One true, one false.
Step 7: Final Answer.
Both of B's statements hold, and no one else has two true statements, so B is the person who always speaks the truth. (The printed answer key names option D here, but the family tree it derives points to B, so the key is corrected in this solution.)