[proofplan]
We compute the weights of the contragredient dual module directly from the definition of the dual action: they are exactly the negatives of the weights of $L(\lambda)$, with the same multiplicities. We then identify the smallest weight of $L(\lambda)$ as $w_0\lambda$ using [Weyl invariance of finite-dimensional characters](/theorems/9357) and the highest-weight bound on the weights. Therefore the largest weight in the dual is $-w_0\lambda$. Finally, the dual of a finite-dimensional irreducible module is irreducible, so classification of finite-dimensional irreducible highest-weight modules identifies it with $L(-w_0\lambda)$.
[/proofplan]
[step:Define the contragredient action and compute the dual weights]
Let $V:=L(\lambda)$. Since $V$ is finite-dimensional, its ordinary complex dual is the [vector space](/page/Vector%20Space)
\begin{align*}
V^*:=\operatorname{Hom}_{\mathbb C}(V,\mathbb C).
\end{align*}
We equip $V^*$ with the contragredient $\mathfrak g$-action
\begin{align*}
\mathfrak g\times V^*&\to V^*
\end{align*}
\begin{align*}
(x,\varphi)&\mapsto x\cdot\varphi,
\end{align*}
defined by
\begin{align*}
(x\cdot\varphi)(v):=-\varphi(x\cdot v)
\end{align*}
for every $x\in\mathfrak g$, $\varphi\in V^*$, and $v\in V$.
For each weight $\mu\in\mathfrak h^*$ of $V$, let
\begin{align*}
V_\mu:=\{v\in V:h\cdot v=\mu(h)v\text{ for every }h\in\mathfrak h\}.
\end{align*}
Because $V$ is finite-dimensional and semisimple as an $\mathfrak h$-module, it decomposes as
\begin{align*}
V=\bigoplus_{\mu\in\operatorname{Wt}(V)}V_\mu,
\end{align*}
where $\operatorname{Wt}(V)$ denotes the finite set of weights of $V$.
For $\mu\in\operatorname{Wt}(V)$, define
\begin{align*}
V_\mu^*:=\operatorname{Hom}_{\mathbb C}(V_\mu,\mathbb C).
\end{align*}
Using the direct-sum decomposition of $V$, we identify $V_\mu^*$ with the subspace of $V^*$ consisting of functionals that vanish on $V_\nu$ for every $\nu\ne\mu$. If $\varphi\in V_\mu^*$, $h\in\mathfrak h$, and $v\in V_\nu$, then
\begin{align*}
(h\cdot\varphi)(v)=-\varphi(h\cdot v)=-\nu(h)\varphi(v).
\end{align*}
This is zero when $\nu\ne\mu$, since then $\varphi(v)=0$, and it is $-\mu(h)\varphi(v)$ when $\nu=\mu$. Hence
\begin{align*}
h\cdot\varphi=(-\mu)(h)\varphi
\end{align*}
for every $h\in\mathfrak h$. Therefore $V_\mu^*$ is contained in the $(-\mu)$-weight space of $V^*$.
Conversely, every functional in $V^*$ decomposes uniquely as a sum of functionals on the summands $V_\mu$. Hence
\begin{align*}
(V^*)_{-\mu}=V_\mu^*
\end{align*}
for every $\mu\in\operatorname{Wt}(V)$, and
\begin{align*}
\operatorname{Wt}(V^*)=-\operatorname{Wt}(V):=\{-\mu:\mu\in\operatorname{Wt}(V)\}.
\end{align*}
Moreover,
\begin{align*}
\dim (V^*)_{-\mu}=\dim V_\mu.
\end{align*}
[guided]
The sign in the theorem comes entirely from the contragredient action, so we make that action explicit. Let $V:=L(\lambda)$, and let
\begin{align*}
V^*:=\operatorname{Hom}_{\mathbb C}(V,\mathbb C)
\end{align*}
be the ordinary finite-dimensional dual vector space. The dual action is the map
\begin{align*}
\mathfrak g\times V^*&\to V^*
\end{align*}
\begin{align*}
(x,\varphi)&\mapsto x\cdot\varphi,
\end{align*}
defined by
\begin{align*}
(x\cdot\varphi)(v):=-\varphi(x\cdot v)
\end{align*}
for every $x\in\mathfrak g$, $\varphi\in V^*$, and $v\in V$. The minus sign is forced by the requirement that this define a [Lie algebra](/page/Lie%20Algebra) representation on the dual.
For each weight $\mu\in\mathfrak h^*$ of $V$, define the corresponding weight space by
\begin{align*}
V_\mu:=\{v\in V:h\cdot v=\mu(h)v\text{ for every }h\in\mathfrak h\}.
\end{align*}
Since $V$ is finite-dimensional and is a finite-dimensional highest-weight module, it is a weight module, so
\begin{align*}
V=\bigoplus_{\mu\in\operatorname{Wt}(V)}V_\mu,
\end{align*}
where $\operatorname{Wt}(V)$ is the finite set of weights appearing in $V$.
Now fix a weight $\mu\in\operatorname{Wt}(V)$. Define
\begin{align*}
V_\mu^*:=\operatorname{Hom}_{\mathbb C}(V_\mu,\mathbb C).
\end{align*}
Because $V$ is the [direct sum](/page/Direct%20Sum) of the weight spaces, a functional on $V_\mu$ can be viewed as a functional on all of $V$ by declaring it to vanish on every $V_\nu$ with $\nu\ne\mu$. Let $\varphi\in V_\mu^*$ under this identification. If $h\in\mathfrak h$ and $v\in V_\nu$, then the dual action gives
\begin{align*}
(h\cdot\varphi)(v)=-\varphi(h\cdot v).
\end{align*}
Since $v\in V_\nu$, we have $h\cdot v=\nu(h)v$, so
\begin{align*}
(h\cdot\varphi)(v)=-\nu(h)\varphi(v).
\end{align*}
If $\nu\ne\mu$, then $\varphi(v)=0$ by construction. If $\nu=\mu$, then this becomes
\begin{align*}
(h\cdot\varphi)(v)=-\mu(h)\varphi(v).
\end{align*}
Since every vector of $V$ is a finite sum of vectors from the spaces $V_\nu$, this proves
\begin{align*}
h\cdot\varphi=(-\mu)(h)\varphi
\end{align*}
for every $h\in\mathfrak h$. Thus a functional supported on the $\mu$-weight space of $V$ is a vector of weight $-\mu$ in the dual.
Conversely, every element of $V^*$ decomposes uniquely into its restrictions to the summands $V_\mu$, because $V$ is the direct sum of these finitely many spaces. Therefore the full $(-\mu)$-weight space of $V^*$ is exactly $V_\mu^*$:
\begin{align*}
(V^*)_{-\mu}=V_\mu^*.
\end{align*}
Consequently the weights of $V^*$ are precisely the negatives of the weights of $V$:
\begin{align*}
\operatorname{Wt}(V^*)=-\operatorname{Wt}(V).
\end{align*}
The multiplicities agree because dual vector spaces have the same finite dimension:
\begin{align*}
\dim (V^*)_{-\mu}=\dim V_\mu.
\end{align*}
[/guided]
[/step]
[step:Identify $w_0\lambda$ as the lowest weight of $L(\lambda)$]
Let $Q_+$ denote the additive monoid generated by the simple roots:
\begin{align*}
Q_+:=\left\{\sum_{\alpha\in\Delta}n_\alpha\alpha:n_\alpha\in\mathbb Z_{\ge 0}\right\}.
\end{align*}
Write $\nu\le \eta$ when $\eta-\nu\in Q_+$.
Since $V=L(\lambda)$ is generated by a highest weight vector of weight $\lambda$, the PBW spanning argument for highest-weight modules gives
\begin{align*}
\operatorname{Wt}(V)\subseteq \lambda-Q_+.
\end{align*}
Equivalently, every weight $\mu\in\operatorname{Wt}(V)$ satisfies $\mu\le\lambda$.
The weight $\lambda$ occurs in $V$. By Weyl invariance of finite-dimensional characters, cited here as [citetheorem:9357], the multiplicity of each weight is invariant under the Weyl [group action](/page/Group%20Action). Therefore $w_0\lambda$ occurs in $V$.
It remains to check that $w_0\lambda$ is minimal for the order $\le$. Let $\mu\in\operatorname{Wt}(V)$. Again by [citetheorem:9357], $w_0\mu$ is a weight of $V$. Hence $w_0\mu\le\lambda$, so
\begin{align*}
\lambda-w_0\mu\in Q_+.
\end{align*}
The longest Weyl group element satisfies $w_0(\Phi^+)=-\Phi^+$ and $w_0^2=1$. Applying $-w_0$ to the preceding element gives
\begin{align*}
-w_0(\lambda-w_0\mu)=\mu-w_0\lambda\in Q_+.
\end{align*}
Thus $w_0\lambda\le\mu$ for every $\mu\in\operatorname{Wt}(V)$. Therefore $w_0\lambda$ is the lowest weight of $V$.
[/step]
[step:Show that $-w_0\lambda$ is the highest weight of the dual module]
From the first step,
\begin{align*}
\operatorname{Wt}(V^*)=-\operatorname{Wt}(V).
\end{align*}
Since $w_0\lambda$ is a weight of $V$, the weight $-w_0\lambda$ occurs in $V^*$.
Let $\nu\in\operatorname{Wt}(V^*)$. Then $\nu=-\mu$ for some $\mu\in\operatorname{Wt}(V)$. Since $w_0\lambda\le\mu$, we have
\begin{align*}
\mu-w_0\lambda\in Q_+.
\end{align*}
Equivalently,
\begin{align*}
(-w_0\lambda)-\nu=(-w_0\lambda)-(-\mu)=\mu-w_0\lambda\in Q_+.
\end{align*}
Thus $\nu\le -w_0\lambda$ for every weight $\nu$ of $V^*$. Hence $-w_0\lambda$ is the highest weight of $V^*$.
[/step]
[step:Verify that the dual is irreducible]
Let $M\subseteq V^*$ be a nonzero $\mathfrak g$-submodule. Define its annihilator in $V$ by
\begin{align*}
M^\perp:=\{v\in V:\varphi(v)=0\text{ for every }\varphi\in M\}.
\end{align*}
For $x\in\mathfrak g$, $v\in M^\perp$, and $\varphi\in M$, we have $x\cdot\varphi\in M$ and therefore
\begin{align*}
0=(x\cdot\varphi)(v)=-\varphi(x\cdot v).
\end{align*}
Thus $\varphi(x\cdot v)=0$ for every $\varphi\in M$, so $x\cdot v\in M^\perp$. Hence $M^\perp$ is a $\mathfrak g$-submodule of $V$.
Since $V=L(\lambda)$ is irreducible, $M^\perp$ is either $0$ or $V$. Because $M\ne 0$, there exist $\varphi\in M$ and $v\in V$ such that $\varphi(v)\ne 0$, so $M^\perp\ne V$. Hence $M^\perp=0$.
In finite dimension, the annihilator operation satisfies
\begin{align*}
\dim M^\perp=\dim V-\dim M.
\end{align*}
Since $M^\perp=0$, it follows that $\dim M=\dim V=\dim V^*$. Therefore $M=V^*$. Thus $V^*$ is irreducible as a $\mathfrak g$-module.
[/step]
[step:Apply highest weight classification to identify the dual module]
The longest element $w_0$ sends the dominant chamber to the antidominant chamber, and it preserves the integral weight lattice. Hence $-w_0\lambda$ is dominant integral.
We have proved that $V^*=L(\lambda)^*$ is a finite-dimensional irreducible highest-weight $\mathfrak g$-module with highest weight $-w_0\lambda$. By the classification of finite-dimensional irreducible highest-weight modules, cited here as [citetheorem:9373], there is an isomorphism of $\mathfrak g$-modules
\begin{align*}
V^*\cong L(-w_0\lambda).
\end{align*}
Since $V=L(\lambda)$, this is precisely
\begin{align*}
L(\lambda)^*\cong L(-w_0\lambda).
\end{align*}
[/step]