Proof sketch. If
\(p\colon\tilde X\to X\) is a universal covering, choose an evenly covered path-connected neighbourhood
\(U\) of
\(x\in X\text{.}\) Every loop in
\(U\) lifts to a loop in a single sheet over
\(U\text{.}\) The lifted loop is null-homotopic because
\(\tilde X\) is simply connected, so the original loop is null-homotopic in
\(X\text{.}\)
Conversely, fix
\(x_0\in X\) and let
\(\tilde X\) be the set of endpoint-preserving homotopy classes of paths in
\(X\) starting at
\(x_0\text{,}\) with
\(p([\alpha])=\alpha(1)\text{.}\) Give
\(\tilde X\) the topology in which a basic neighbourhood of
\([\alpha]\) is obtained by appending to
\(\alpha\) paths lying in a small path-connected open set
\(U\) whose loops are null-homotopic in
\(X\text{.}\) Local path-connectedness and semilocal simple connectivity provide a basis of such sets
\(U\text{,}\) and over each one the endpoint map is a disjoint union of homeomorphisms onto
\(U\text{.}\) Thus
\(p\) is a covering map. The lift of a path
\(\alpha\) starting at
\(x_0\) ends at
\([\alpha]\text{,}\) from which one checks that
\(\tilde X\) is path-connected and simply connected. Hence
\(p\) is a universal covering. This is the standard path-space construction; see Fulton,
Algebraic Topology: A First Course, Theorem 13.20.