Well, first of all look throug the similar questions about denoising techniques, which have already come out in this foru. No doubt, there you'll find many useful recommendations.
In general, denoising necessity arises almost everywhere in signal processing procedures. Fortunately, nowadays the majority of algorithms are invented in order to get rid of noise. First of all, if you exactly know the frequency bands, occupied by the signal and noise components, you may just apply simple filtration. Usually noise is high-pass process, therefore low-pass filter will help eliminate the harmful and undesirable noise. This filter may be created using chebyshev, butterwart, elliptic and other well-known algorithms. Hwever, the probability exists, that you can spoil signal, if the bands overlap. So when choosing the available and changeable filter parameters you should be careful.
Besides, it's possible to use Viner filter. Fing the correspondent books on it in order to get acquanted with this method.
In my opinion, the most suitable algorithms are those, connected with Wavelet technology, Empirical Mode Decomposition and Singular Spectral analysis. These themes are extemely vast and unexhausted, so it's difficult to retell here at least the basic conceptions of the enumerated techniques. See the following sources of literature:
1) N.E. Huang "Hilbert-Huang transform and its applications"
2) S. Mallat "Wavelets in Signal Processing", "A Wavelet Tour of Signal Processing"
3) Golyandina, Nekrutkin, Zhigljavsky "Analysis of Time Series Structure: SSA and Related Techniques"
There you'll find the information about denoising.
With respect,
Dmitrij