Your intuition is correct: a formal proof is as follows.
Let $f$ be continuous on $\mathbb R\setminus E$ with $\mu(E)=0$ where $\mu$ denotes the Lebesgue measure over $\mathbb R$. $E$ is measurable, therefore (by definition) for every $n\in\mathbb N$ there exists an open set $E_n\supseteq E$ such that $\mu(E_n)<\frac 1n$. An open set in $\mathbb R$ is countable union of open intervals, so that for every $n\in\mathbb N$ the compact set $R_n\,\dot=\,[-n,n]\setminus E_n$ (on which $f$ is continuous) is countable union of intervals - where a set $\{x_0\}$ is considered as the closed interval $[x_0,x_0]$. Note that $R_n\nearrow\mathbb R\setminus E$ as $n\to\infty$.
Assuming (which is true) that every continuous function is uniformly approximable with step functions over compact sets let $\vartheta_n$ be a step function with ${\sf supp}\vartheta_n\subseteq[-n,n]$ and such that $\|\vartheta_n-f\chi_{R_n}\|_\infty<\frac1n$ where $\chi_{R_n}$ denotes the characteristic function of the set $R_n$. (Just for a matter of simplicity, so that there is no need to define another function $\varphi_n$, I chose $\vartheta_n$ to be equal to $0$ on $[-n,n]\setminus R_n=E_n$ instead of $1$ which would work as well). Note that $\vartheta_n$ is a step function over $\mathbb R$ as well (not only over $R_n$).
Then for every $x\in\mathbb R\setminus E~$ $\vartheta_n(x)\to f(x)$ as $n\to\infty$. In fact, since $R_n\nearrow\mathbb R\setminus E$, there exists a natural $\nu=\nu(x)$ such that $x\in R_n$ for every $n\geq\nu$, therefore by the property of $\vartheta_n$ you have that $|\vartheta_n(x)-f(x)|<\frac 1n$ for every $n\geq\nu$. This ensures that $\vartheta_n\to f$ pointwise in $\mathbb R\setminus E$, id est almost everywhere.
EDIT: I think that local Riemann-integrability over is sufficient though. If $f$ is locally Riemann-integrable, then for every $n$ there exists a partition $\mathcal P_n=(t_0,\ldots,t_{k_n})$ of $[-n,n]$ such that
$$
\left| s_n - \int_{-n}^nf(x)\,{\rm d}x \right| < \frac 1n
$$
where
$$
s_n
=
\sum_{j=1}^{k_n} (t_j-t_{j-1})m_j
\quad\text{and}\quad
m_j
=
\underset{x\in[t_{j-1},t_j]}{\sf ess\,inf} f(x)
$$
where the essential infimum is taken with respect to the Peano-Jordan measure. Therefore the function
$$
\vartheta_n
=
\sum_{j=1}^{k_n} m_j\chi_{(t_{j-1},t_j]}
$$
locally converges in the $L^1$-norm to $f$ as $n\to\infty$ (remember that a locally Riemann-integrable function is also locally Lebesgue integrable). There is an easily provable result that states that this implies that there exists a subsequence $\vartheta_{n_j}$ which converges to $f$ almost everywhere as $j\to \infty$.
Best Answer
Take $\phi_{n}(x)=\sum_{i=1}^{n}\frac{n}{n+i}\chi_{E_{i}}(x)$ where $E_{i}=\{x: 1+\frac{i-1}{n}<x<1+\frac{i}{n}\}$.
Actually, you can see that it is natural by drawing the graph of $f$ and $\phi_{n}$.