[proofplan]
We prove the contrapositive by assuming that two objects $A$ and $B$ admit at least two distinct arrows $A \to B$. Since $\mathcal C$ is small, the collection $M$ of all morphisms is a set, so we may form the $M$-indexed product of copies of $B$. The product universal property identifies arrows $A \to \prod_{m \in M} B$ with $M$-indexed families of arrows $A \to B$. Since there are at least two such arrows, a diagonal cardinality argument shows that there are more such families than there are morphisms in $\mathcal C$, contradicting smallness of the morphism set.
[/proofplan]
[step:Choose two parallel arrows and form the product indexed by all morphisms]
Assume, for contradiction, that $\mathcal C$ is not a preorder. Then there exist objects $A,B \in \operatorname{Ob}(\mathcal C)$ and two distinct morphisms
\begin{align*}
h_0,h_1: A \to B
\end{align*}
in $\mathcal C$.
Because $\mathcal C$ is small, its morphism collection
\begin{align*}
M := \operatorname{Mor}(\mathcal C)
\end{align*}
is a set. Define the constant $M$-indexed family of objects
\begin{align*}
F: M &\to \operatorname{Ob}(\mathcal C) \\
m &\mapsto B .
\end{align*}
Since $\mathcal C$ admits all small products, this family has a product. Choose a product object $P \in \operatorname{Ob}(\mathcal C)$ together with projection morphisms
\begin{align*}
\pi_m: P \to B
\end{align*}
for each $m \in M$.
[guided]
We begin by negating the conclusion. Saying that $\mathcal C$ is not a preorder means exactly that some hom-set has at least two elements. Thus we choose objects $A,B \in \operatorname{Ob}(\mathcal C)$ and distinct arrows
\begin{align*}
h_0,h_1: A \to B .
\end{align*}
The smallness hypothesis is used here in a specific way: it makes the total morphism collection
\begin{align*}
M := \operatorname{Mor}(\mathcal C)
\end{align*}
a set. Since products are assumed to exist for every set-indexed family of objects, we may index a product by $M$ itself. Define the constant family
\begin{align*}
F: M &\to \operatorname{Ob}(\mathcal C) \\
m &\mapsto B .
\end{align*}
The product hypothesis gives an object $P \in \operatorname{Ob}(\mathcal C)$ and projections
\begin{align*}
\pi_m: P \to B
\end{align*}
for every $m \in M$. This object is the product of one copy of $B$ for each morphism of the category.
[/guided]
[/step]
[step:Identify arrows into the product with families of arrows into $B$]
Let $H := \mathcal C(A,B)$ be the hom-set from $A$ to $B$. Define the set of $M$-indexed $H$-valued functions by
\begin{align*}
H^M := \{u: M \to H\}.
\end{align*}
The product projections define a map
\begin{align*}
\Phi: \mathcal C(A,P) &\to H^M \\
f &\mapsto \bigl(m \mapsto \pi_m \circ f\bigr).
\end{align*}
By the universal property of the product $P$, for every function $u: M \to H$ there exists a unique morphism $\bar u: A \to P$ such that
\begin{align*}
\pi_m \circ \bar u = u(m)
\end{align*}
for every $m \in M$. Hence $\Phi$ is bijective, and therefore
\begin{align*}
|\mathcal C(A,P)| = |H^M|.
\end{align*}
[guided]
The product $P$ is designed so that maps into $P$ are exactly compatible families of maps into its factors. Here every factor is $B$, so maps $A \to P$ should correspond to $M$-indexed families of maps $A \to B$.
Let
\begin{align*}
H := \mathcal C(A,B)
\end{align*}
and define
\begin{align*}
H^M := \{u: M \to H\}.
\end{align*}
Thus an element of $H^M$ assigns to each morphism $m \in M$ a morphism $u(m): A \to B$.
Using the projections of the product, define
\begin{align*}
\Phi: \mathcal C(A,P) &\to H^M \\
f &\mapsto \bigl(m \mapsto \pi_m \circ f\bigr).
\end{align*}
For each $f: A \to P$ and each $m \in M$, the composite $\pi_m \circ f$ is a morphism $A \to B$, so $\Phi(f)$ is indeed an element of $H^M$.
Now apply the universal property of the product $P$. Given any function $u: M \to H$, the family $(u(m))_{m \in M}$ is an $M$-indexed family of morphisms $A \to B$. The product universal property gives a unique morphism $\bar u: A \to P$ satisfying
\begin{align*}
\pi_m \circ \bar u = u(m)
\end{align*}
for every $m \in M$. This proves that every element of $H^M$ is hit by $\Phi$, and the uniqueness clause proves that two morphisms $A \to P$ with the same image under $\Phi$ must be equal. Therefore $\Phi$ is bijective, so
\begin{align*}
|\mathcal C(A,P)| = |H^M|.
\end{align*}
[/guided]
[/step]
[step:Prove that $H^M$ is too large to inject into $M$]
[claim:The set $H^M$ has cardinality strictly larger than $M$]
There is no injective map $H^M \to M$.
[/claim]
[proof]
Let $\mathcal P(M)$ denote the power set of $M$, namely the set of all subsets of $M$. Since $h_0,h_1 \in H$ are distinct, define
\begin{align*}
\iota: \mathcal P(M) &\to H^M \\
S &\mapsto u_S,
\end{align*}
where $u_S: M \to H$ is the function
\begin{align*}
u_S(m)=
\begin{cases}
h_1, & m \in S,\\
h_0, & m \notin S.
\end{cases}
\end{align*}
For subsets $S,T \subset M$, let $S \triangle T := (S \setminus T) \cup (T \setminus S)$ denote their symmetric difference. If $S,T \subset M$ and $S \neq T$, choose $m \in S \triangle T$. Then $u_S(m) \neq u_T(m)$ because $h_0 \neq h_1$, so $\iota(S) \neq \iota(T)$. Hence $\iota$ is injective.
It remains to show that no injection $\mathcal P(M) \to M$ exists. Suppose that
\begin{align*}
j: \mathcal P(M) \to M
\end{align*}
is injective. Define
\begin{align*}
q: M &\to \mathcal P(M)
\end{align*}
by setting $q(j(S)) := S$ for $S \subset M$ and setting $q(m) := \varnothing$ for $m \notin j(\mathcal P(M))$. This is well-defined because $j$ is injective, and it is surjective because $q(j(S))=S$ for every $S \subset M$.
Now define the diagonal subset
\begin{align*}
D := \{m \in M : m \notin q(m)\}.
\end{align*}
Since $q$ is surjective, there exists $a \in M$ such that $q(a)=D$. Then
\begin{align*}
a \in D \iff a \notin q(a) \iff a \notin D,
\end{align*}
which is impossible. Hence no injection $\mathcal P(M) \to M$ exists.
Since $\mathcal P(M)$ injects into $H^M$, an injection $H^M \to M$ would compose with $\iota$ to give an injection $\mathcal P(M) \to M$, which has just been ruled out. Therefore there is no injective map $H^M \to M$.
[/proof]
[/step]
[step:Derive the cardinality contradiction and conclude that the category is thin]
The set $\mathcal C(A,P)$ is a subset of $M=\operatorname{Mor}(\mathcal C)$, because its elements are morphisms of $\mathcal C$. Therefore the inclusion
\begin{align*}
\mathcal C(A,P) \hookrightarrow M
\end{align*}
is injective.
The bijection $\Phi: \mathcal C(A,P) \to H^M$ from the previous step gives an injection
\begin{align*}
H^M \to M
\end{align*}
by composing $\Phi^{-1}: H^M \to \mathcal C(A,P)$ with the inclusion $\mathcal C(A,P) \hookrightarrow M$. This contradicts the claim that no injection $H^M \to M$ exists.
Hence the assumption that some hom-set $\mathcal C(A,B)$ contains two distinct morphisms is false. Therefore every hom-set of $\mathcal C$ has at most one element, so $\mathcal C$ is a preorder.
Finally, if $\mathcal C$ is small and complete, then in particular it has all small products. Applying the result just proved, $\mathcal C$ is a preorder.
[/step]