Simple tikz solution
I prefer to use pure tikz without defining new commands or importing packages, using a rectangle that takes the lower left corner and the upper right corner as input. In this case, we use the index of the matrix m
that we define previously:
\draw (lower left coordinates) rectangle (upper right corner);
In the matrix I wrote the coordinates of the elements so it is easier to understand which are the starting and ending points.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{arrows,matrix,positioning}
\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=)] (m)
{
i_{1,1} & i_{1,2} & i_{1,3} & i_{1,4} & i_{1,5} & i_{1,6} \\
i_{2,1} & i_{2,2} & i_{2,3} & i_{2,4} & i_{2,5} & i_{2,6} \\
i_{3,1} & i_{3,2} & i_{3,3} & i_{3,4} & i_{3,5} & i_{3,6} \\
i_{4,1} & i_{4,2} & i_{4,3} & i_{4,4} & i_{4,5} & i_{4,6} \\
i_{5,1} & i_{5,2} & i_{5,3} & i_{5,4} & i_{5,5} & i_{5,6} \\
i_{6,1} & i_{6,2} & i_{6,3} & i_{6,4} & i_{6,5} & i_{6,6} \\
};
%simple rectangle
\draw (m-3-1.south west) rectangle (m-1-3.north east);
%fancy blue rectangle
\draw[rounded corners,ultra thick, draw=black, fill=blue, opacity=0.3] (m-6-4.south west) rectangle (m-4-6.north east);
\end{tikzpicture}
\end{document}
Compared to other answers
This answer is similar to someonr answer however his answer will output trapezoidal shape if the matrix elements have different lengths, compared to Stephen answer it can handle multiple selections without modifying the code.
For reference I post also a Python 2.7 script for generating the matrix which can be quite a tedious task to perform manually:
size = 6
for i in range(1,size+1):
for j in range(1,size+1):
if j%size != 0 or j == 0:
print "i_{%s,%s} &" %(i,j),
else:
print r"""i_{%s,%s} \\ """ %(i,j)
!
in front of it to turn it into a link. A moderator or another user with edit privileges can then reinsert the!
to turn it into an image again.