MatrixQ[expr] gives True if expr is a list of lists that can represent a matrix, and gives False otherwise.
MatrixQ[expr, test] gives True only if test yields True when applied to each of the matrix elements in expr.
MatrixQ[expr] gives True only if expr is a list, and each of its elements is a list of the same length, containing no elements that are themselves lists.
MatrixQ[expr, NumberQ] tests whether expr is a numerical matrix.
See The Mathematica Book: Section 2.3.5 and Section 3.7.3.
See also: VectorQ, TensorRank.
Related package: LinearAlgebra`MatrixManipulation`.