The postfix operator (//) has a higher precedence than Set (=), so Ix and Iy are not just the matrix, but the matrix with the formatting function MatrixForm:
In[7]:= FullForm[Ix]
Out[7]//FullForm= MatrixForm[List[List[0,Rational[1,2]],List[Rational[1,2],0]]]
You can use parentheses in this case to avoid this problem:
(Ix = (1/2)*{{0, 1}, {1, 0}}) // MatrixForm
(Iy = (1/2)*{{0, -i}, {i, 0}}) // MatrixForm
MatrixForm[Ix.Iy]