I believe the best approach to understand this is the one outlined in Weiberg's Quantum Field Theory book. I'll try to summarize the important points in the way I've understood it. If anyone notices any mistake in my understanding on the subject, please point out in comments.
The point is that we need a theory of relativistic particles, since that is what observations points to. Thus consider the description of the states of a single particle. If Quantum Mechanics is to be employed, and again, experiments show that this must be the case, then to describe the states of such particle we need a Hilbert space of states.
This is the single particle state space. But in Special Relativity, spacetime presents a special symmetry group that we want our theory to respect. That is the Poincare group composed of spacetime translations and Lorentz transformations, which are simply the rotations and Lorentz boosts combined together.
Let me call the Poincare group $P(1,3)$. By Quantum Mechanics the single particle state space is a Hilbert space $\mathcal{H}$ and the various symmetries we may describe for such system are described by unitary operators in $\mathcal{H}$. The unitarity requirement is to ensure that the transformations don't alter the probabilties and mean values.
Now here comes the thing: the Poincare group $P(1,3)$ must act on the system, so that we can describe the action of its various transformations on the states of the particle.
Well, the Hilbert space is a vector space and when a group acts on a vector space we say the vector space carries a representation of the group. More precisely, a representation of a group $G$ on the vector space $V$ is a homomorphism $\rho : G\to GL(V)$ which associates the elements of $G$ to linear invertible operators in $V$ such that each $g\in G$ can act on $V$ by the linear operator $\rho(g)$.
Thus, the Poincare transformations must act on $\mathcal{H}$ by virtue of a representation $U : P(1,3)\to GL(\mathcal{H})$. Unitarity then means that given $(a,\Lambda) \in P(1,3)$ we have
$$(U(a,\Lambda)\psi,U(a,\Lambda)\varphi)=(\psi,\varphi),\quad \forall \psi,\varphi\in \mathcal{H}$$
Thus the possible one-particle state spaces can be found as the possible representations of the Poincare group. Furthermore, we want the elementary particles to be in correspondence to the irreducible representations, those that can't be broken down into simpler pieces.
There's a theorem then, known as Wigner's classification, which tells what are all the possible unitary irreducible representations of $P(1,3)$.
They obey the following characterization: they are characterized by two numbers $m,j$ being $m\in [0,+\infty)$ and $j\in \frac{1}{2}\mathbb{Z}$ meaning that $j=n/2$ for $n\in \mathbb{Z}$. Furthermore we have the condition that if $m > 0$ then for each momentum $p$ eigenvalue there are $2j+1$ states corresponding to it, while if $m = 0$ for each momentum $p$ eigenvalue there are two states corresponding to it.
It turns out that from the procedure that derives this classification, the $m$ is the mass and this $j$ is exactly what you would expect of spin (see the article Pauli–Lubanski pseudovector
on Wikipedia). It turns out that in mathematical grounds, considering that we want to associate elementary particles with unitary irreducible representations of the Poincare group by the reasons I've mentioned, the spin of elementary particles must be a half integer. And this is indeed what is observed.