We can assume that
\(X\) is path-connected, or we can work one path component at a time. Choose a basepoint and a set of based representatives
\(J = \{ j_q \mid [j] \in \pi_qX, q \ge 1 \}\text{.}\) Let
\(\Gamma_1 X = \bigvee_{j_q \in J} S^q\) (with its standard CW structure) and
\(\gamma_1 \coloneqq \vee j_q \colon \Gamma_1 X \to X\text{.}\) By construction,
\(\gamma_1\) is surjective on
\(\pi_q\) for every
\(q\geq1\text{.}\) Since
\(\Gamma_1 X\) and
\(X\) are path-connected, it also induces a bijection on
\(\pi_0\text{,}\) and hence is a
\(1\)-equivalence. Suppose by induction that we have constructed a CW complex
\(\Gamma_n X\) and an
\(n\)-equivalence
\(\Gamma_n X \to X\text{.}\) Once again, let
\(J = \{ j \mid [j] \in \pi_n(\Gamma_n X), [\gamma_n \circ j] = 0 \in \pi_nX \}\text{.}\) Choose the representatives
\(j\) to be cellular, so that attaching the new cells preserves the CW structure. As in the proof of
Lemma 9.15, we attach cells to kill these classes; here we kill only the kernel. By
Lemma 9.14, for each
\(j \in J\) there exists an extension
\(h_j\) of
\(S^n \xrightarrow{\gamma_n \circ j} X\) to
\(D^{n+1}\text{.}\) We then construct
\(\Gamma_{n+1}X\) by the pushout

The inclusion
\(i_n\colon \Gamma_n X\hookrightarrow \Gamma_{n+1}X\) is an
\(n\)-equivalence by
Lemma 9.2, just as in
Lemma 9.15. Thus every based map
\(S^q\to \Gamma_{n+1}X\) for
\(q\leq n\) factors through
\(\Gamma_n X\) up to based homotopy. Since
\(\gamma_{n+1}i_n=\gamma_n\) and
\((i_n)_*\) is an isomorphism for
\(q<n\text{,}\) \((\gamma_{n+1})_*\) is also an isomorphism in these degrees. For
\(q=n\) we have a commutative diagram
so that
\((\gamma_{n+1})_*\) is surjective. For injectivity, let
\(u\in\pi_n(\Gamma_{n+1}X)\) map to zero and lift it to
\(v\in\pi_n(\Gamma_n X)\text{.}\) Then
\((\gamma_n)_*v=0\text{,}\) so
\(v\) is represented by one of the attaching maps. Its attached disc makes
\((i_n)_*v=0\text{,}\) hence
\(u=0\text{.}\) Thus
\((\gamma_{n+1})_*\) is an isomorphism in degree
\(n\text{.}\)
Moreover,
\(\gamma_1\) factors through
\(\gamma_{n+1}\) via
\(\Gamma_1 X\hookrightarrow \Gamma_{n+1}X\text{.}\) Since
\(\gamma_1\) is surjective on every homotopy group, so is
\(\gamma_{n+1}\text{,}\) in particular in degree
\(n+1\text{.}\) Hence
\(\gamma_{n+1}\) is an
\((n+1)\)-equivalence, completing the induction.
Finally, set
\(\Gamma X=\operatorname{colim}_n \Gamma_n X\) with its CW topology and
\(\gamma=\operatorname{colim}_n\gamma_n\text{.}\) All cells added after
\(\Gamma_{q+1}X\) have dimension at least
\(q+2\text{,}\) so
\(\pi_q(\Gamma X)\cong\pi_q(\Gamma_{q+1}X)\cong\pi_q(X)\) for
\(q\geq1\text{.}\) The spaces are path-connected, and therefore
\(\gamma\) is a weak homotopy equivalence. For general
\(X\text{,}\) take the coproduct of the constructions in its path components.