Over the complex numbers (or any other algebraically closed field with $\operatorname{char} k\neq 2$), every invertible matrix has a square root. In fact, over $\mathbb C$, since every invertible matrix has a logrithm, we can take a one parameter family of matrices $e^{t\log A}$, and taking $t=1/2$ yields a square root of $A$. To see the existance of matrix logrithms, it suffices to show that $I+N$ has a logrithm, where $N$ is nilpotent, and this follows from Taylor series (similar to Ted's proof of the existence of sqare roots).

Thus, we can determine if a matrix $A$ has a square root by restricting to $\displaystyle\bigcup_n \ker A^n$, which is the largest subspace on which $A$ acts nilpotently. In what follows, we will assume that $A$ is nilpotent.

Up to conjugation, $A$ is determined by its Jordan normal form. However, equivalent to JNF for a nilpotent matrix is the data $a_i'=\dim \ker A^i$ for all $i$. This is obviously an increasing sequence. Less obvious is that the sequence $(a_i)$ where $a_i=a'_i-a'_{i-1}$ is a decreasing sequence, and hence forms a partition of $\dim V$ where $A:V\to V$. We note that this data is equivalent to the data in JNF, as $a_i-a_{i+1}$ will be the number of Jordan blocks of size $i$. More explicitly, a jordan block of size $k$ corresponds to the partition $(1,1,1,1,1\ldots, 0,0,0,\ldots)$ with $k$ $1's$, and if a nilpotent matrix $A=\oplus A_i$ is written in block form where each block $A_i$ corresponds to a partition $\pi_i$, then $A$ corresponds to the partition $\pi=\sum \pi_i$, where the sum is taken termwise, e.g. $(2,1)+(1,1)+(7,4,2)=(10,6,2)$.

Moreover, $A^2$ corresponds to the partition $(a_1+a_2, a_3+a_4,\ldots, a_{2i-1}+a_{2i}, \ldots).$ Because every matrix will be conjugate to a JNF matrix and $\sqrt{SAS^{-1}}=S\sqrt{A}S^{-1}$, we see that a matrix will have a square root if and only if the corresponding partition has a "square root."

The only obstruction to a partition having a square root is if two consecutive odd entries are equal. Otherwise, we can take one (of many) square roots by replacing each $a_i$ with the pair $\lceil a_i/2 \rceil, \lfloor a_i/2 \rfloor$.