[proofplan]
We show that the weak limit $x$ belongs to the norm-closure of the convex hull of every tail $\{x_k : k \geq n\}$, using the separating hyperplane theorem (geometric Hahn-Banach) for the contradiction. Once $x$ is in every tail closure, we extract convex combinations $y_n$ with $\|y_n - x\|_X < 1/n$, which converge strongly to $x$.
[/proofplan]
[step:Show $x$ belongs to the norm-closure of the convex hull of every tail]
For each $n \in \mathbb{N}$, define
\begin{align*}
C_n := \operatorname{conv}\{x_k : k \geq n\},
\end{align*}
the convex hull of the tail of the sequence starting at index $n$. We claim $x \in \overline{C_n}$ (the norm-closure) for every $n$.
Suppose for contradiction that $x \notin \overline{C_n}$ for some $n$. The set $\overline{C_n}$ is non-empty, closed, and convex, and $\{x\}$ is a compact convex set disjoint from $\overline{C_n}$. By the geometric form of the Hahn-Banach theorem (the separating hyperplane theorem for Banach spaces), there exist $f \in X^*$ and $\alpha \in \mathbb{R}$ such that
\begin{align*}
f(x) < \alpha \leq f(y) \quad \text{for all } y \in \overline{C_n}.
\end{align*}
In particular, since $x_k \in C_n \subseteq \overline{C_n}$ for all $k \geq n$, we have $f(x_k) \geq \alpha > f(x)$ for all $k \geq n$. This contradicts the hypothesis $x_k \rightharpoonup x$, which requires $f(x_k) \to f(x)$ for every $f \in X^*$. Hence $x \in \overline{C_n}$ for every $n$.
[guided]
The proof is by contradiction. Suppose $x \notin \overline{C_n}$ for some $n$. Since $\overline{C_n}$ is non-empty, closed, and convex, the geometric Hahn-Banach theorem (separating hyperplane theorem) provides $f \in X^*$ and $\alpha \in \mathbb{R}$ with
\begin{align*}
f(x) < \alpha \leq f(y) \quad \text{for all } y \in \overline{C_n}.
\end{align*}
Since $x_k \in C_n \subseteq \overline{C_n}$ for all $k \geq n$, this gives $f(x_k) \geq \alpha > f(x)$ for all $k \geq n$. But $x_k \rightharpoonup x$ means $f(x_k) \to f(x)$ for every $f \in X^*$, so eventually $f(x_k) < \alpha$ -- a contradiction.
Why do we need convexity? The norm-closure of a non-convex set might not be separable from a point by a single functional. Convex sets have the special property that the separating hyperplane theorem applies, and indeed their norm-closure and weak-closure coincide (Mazur's theorem).
The convex hull $C_n = \operatorname{conv}\{x_k : k \geq n\}$ is convex by construction, and $\overline{C_n}$ is closed and convex. The separating hyperplane theorem for normed spaces requires closedness and convexity of the set, both of which hold here.
[/guided]
[/step]
[step:Extract strongly convergent convex combinations from the tail closures]
Since $x \in \overline{C_n}$ for each $n \in \mathbb{N}$, by definition of the norm-closure there exists $y_n \in C_n$ with
\begin{align*}
\|y_n - x\|_X < \frac{1}{n}.
\end{align*}
Each $y_n \in C_n = \operatorname{conv}\{x_k : k \geq n\}$ is a finite convex combination of tail elements:
\begin{align*}
y_n = \sum_{k=n}^{N_n} \lambda_k^{(n)}\, x_k, \quad \lambda_k^{(n)} \geq 0, \quad \sum_{k=n}^{N_n} \lambda_k^{(n)} = 1,
\end{align*}
for some finite $N_n \geq n$.
[/step]
[step:Conclude strong convergence $y_n \to x$]
By construction, $\|y_n - x\|_X < 1/n$ for every $n \in \mathbb{N}$, so
\begin{align*}
\lim_{n \to \infty} \|y_n - x\|_X = 0,
\end{align*}
which is precisely strong convergence $y_n \to x$ in $X$.
[/step]