I would like to prove the following proposition:
Let $x\in \mathcal{A}$ be a self adjoint element of unital C* algebra $\mathcal{A}$. Then for any $\epsilon >0$, there is an invertible element $y\in\mathcal{A}$ such that $||x-y||<\epsilon$.
I believe either continuous functional calculus or Gelfand Naimark theorem should be used for this but I am not entirely sure where to start.
Well, you can use functional calculus as you said..
Solution: Take a large closed interval $I$ that contains $K$. First approximate $f$ uniformly on $I$ by a polynomial $p$, using Weierstrass' theorem -- so without loss of generality we can assume that $f$ is itself a polynomial. Now a polynomial has finitely many roots, say $t_1,t_2,\dots,t_n\in I$. Consider small disjoint intervals $I_i:=[\alpha_i,\beta_i]$ centered at $t_i$ and continuous piecewise linear functions $\psi_i:I_i\to[0,\varepsilon]$ such that $\psi_i(t_i)=\varepsilon$, $\psi_i(\alpha_i)=\psi_i(\beta_i)=0$. Now find a continuous function $\Psi:I\to[0,\varepsilon]$ such that $\Psi\vert_{I_i}=\psi_i$ (using Tietze's extension theorem). Then put $g(t):=p(t)+i\Psi(t)$. note that $\|g-p\|<\varepsilon$ and, if $g(t)=0$, then $p(t)=0$ and $\Psi(t)=0$. Since $p(t)=0$, $t$ is one of the roots so $t=t_i$ for some $i$. But then $\Psi(t)=\psi_i(t)=\varepsilon$, so $\varepsilon=0$ a contradiction (hence $g(t)\ne0$).
Just apply this to $K=\sigma(x)$ and $f=\text{id}_K$ to obtain an approximant $g(x)\in C^*(x)$, which is invertible, since $\sigma(g(x))=\sigma(g)=\text{range}(g)\not\ni0$.
Note: it is very important that we are allowing complex valued functions. If we were looking for invertible and self-adjoint approximants, this would be impossible (why? Think of $C[0,1]$..)