[proofplan]
The proof is an unpacking of the definitions. Faithfulness of a functor is precisely injectivity of every induced map on hom-sets, while fullness is precisely surjectivity of every induced map on hom-sets. Since a function is bijective exactly when it is both injective and surjective, the two conditions together are equivalent to bijectivity of every $F_{X,Y}$.
[/proofplan]
[step:Translate faithfulness and fullness into conditions on the induced hom-set maps]
For objects $X,Y\in\operatorname{Ob}(\mathcal C)$, the functor $F:\mathcal C\to\mathcal D$ determines the function
\begin{align*}
F_{X,Y}:\operatorname{Hom}_{\mathcal C}(X,Y)&\to \operatorname{Hom}_{\mathcal D}(F(X),F(Y))\\
f&\mapsto F(f).
\end{align*}
By definition, $F$ is faithful exactly when, for every $X,Y\in\operatorname{Ob}(\mathcal C)$, the map $F_{X,Y}$ is injective. Likewise, $F$ is full exactly when, for every $X,Y\in\operatorname{Ob}(\mathcal C)$, the map $F_{X,Y}$ is surjective.
[/step]
[step:Show that full and faithful implies bijective on every hom-set]
Assume $F$ is full and faithful. Let $X,Y\in\operatorname{Ob}(\mathcal C)$ be arbitrary. Since $F$ is faithful, $F_{X,Y}$ is injective. Since $F$ is full, $F_{X,Y}$ is surjective. Therefore $F_{X,Y}$ is both injective and surjective, hence bijective.
Because $X$ and $Y$ were arbitrary, $F_{X,Y}$ is a bijection for every pair of objects $X,Y\in\operatorname{Ob}(\mathcal C)$.
[/step]
[step:Show that bijective hom-set maps imply full and faithful]
Conversely, assume that for every $X,Y\in\operatorname{Ob}(\mathcal C)$, the map $F_{X,Y}$ is a bijection. Let $X,Y\in\operatorname{Ob}(\mathcal C)$ be arbitrary. Since $F_{X,Y}$ is bijective, it is injective and surjective.
Thus every induced hom-set map is injective, so $F$ is faithful. Also every induced hom-set map is surjective, so $F$ is full. Hence $F$ is full and faithful.
[/step]
[step:Conclude the characterization]
The two implications prove that $F$ is full and faithful if and only if every induced hom-set map
\begin{align*}
F_{X,Y}:\operatorname{Hom}_{\mathcal C}(X,Y)\to \operatorname{Hom}_{\mathcal D}(F(X),F(Y))
\end{align*}
is a bijection. This is exactly the assertion that, between corresponding image objects, $F$ neither identifies distinct morphisms of $\mathcal C$ nor omits morphisms present in $\mathcal D$.
[/step]