Assume we knew the density function $f$ of the FX price that we observe in the market. Then the market price of a call option $C(K)$ with strike $K$ would be
\begin{align*}
C(K)&=e^{-rT} \int_0^{\infty}(s-K)^+ f(s)ds \\
&=e^{-rT} \left( \int_K^{\infty} s f(s)ds - K \int_K^{\infty}f(s)ds \right) \tag*{(1)}.
\end{align*}
$C(K)$ is a market price and we want to recover $f$ from Eq(1). So we just have to differentiate twice with respect to K. We differentiate once to get
\begin{align*}
\frac{d}{dK}C(K)e^{rT} &= -K f(K) - \left( \int_K^{\infty} f(s)ds - K f(K) \right) \\
&= - \int_K^{\infty} f(s)ds
\end{align*}
Differentiating again
$$\frac{d^2}{dK^2}C(K)e^{rT} = f(K). \tag*{(2)}$$
This shows that the "real" density can be obtained from the call prices. As an easy approximation to Eq(2), we can use the following
$$f(K) \cong \left[ \frac{ C(K+h)+C(K-h)-2C(K)}{h^2} \right]e^{rT}. \tag*{(3)}$$
How do we use this formula? We can collect a set of market prices of calls, for all the strikes corresponding to some maturity, and interpolate the volatilities. Suppose we have 6 market prices. Then we get the implied volatilities from the options prices and interpolate the vols to have a " more dense" set of vols. For example if we originally have market implied vols 85%, 90%, 95%, 100% 105% 110%, we interpolate to obtain 70%, 71%, 72%, ... , 140%. Then we use Black-Scholes formula to obtain $C(K)$ and plug it into Eq(3) in order to get the desired implied density $f$. This can be done in Excel quite easily.
Of course there are many ways to interpolate volatilities and also to extrapolate them in both ends.