Blond hair, blue jacket, yellow shirt, gray trousers.
Each row contains exactly one correct feature, so there are six correct entries but only four columns. All the columns have at least one correct entry; the Jacket and Pants columns each must have two correct entries, as each value occurs twice. So the other two columns must have only one mention of their respective correct entries.
We thus can cross out both browns in the hair column. In the shirt column we know that yellow must be correct as "not yellow" matches any color other than yellow and there should be no double-correct in this column.
Any value that shares a row or colum with yellow can be crossed out as far as correctness goes. So any Purple jacket or Blue pants is incorrect, regardless of whether they are on the same line with yellow shirt.
Since brown hair, purple jacket and green shirt are all wrong, the fifth witness' description of Gray pants must be correct. The other witness describing gray pants must then also be correct, ruling out a white jacket, both for the first witness as well as the fourth witness. This leads to a blue jacket and then to blond hair.