Are there DC removal techniques that do not introduce a filtering transient? I have an application in which I need to remove DC components from a sampled signal in real time (basically the same constraints of ECG, but it has nothing to do with the brain). My measured signal in in the single µV range and the undesired offset wanders around and can be as high as tens of mV.

In this application, fast electrical stimulation is introduced which can reach hundreds of volts and can introduce a measurement artifact of nearly a volt. This stimulus is basically an impulse from the point of view of the processing.

Currently I am using a 200Hz 1st order highpass, as this has an acceptable artifact (i.e., impulse response) after the stimulus. Higher orders are not needed, and these are undesirable as it would make the artifact worse.

My problem is that the actual application will require filters to go down to 1Hz or even lower (in some cases we use 0.05Hz, as this is above the frequency content of the "wandering"). A filter at these frequencies would have an unacceptably long impulse response.

Are there any other techniques that would remove the DC-wandering without having the impulse response artifact problem?



Addendum:

The way this problem is usually handled involves knowledge of the location and duration of the disturbance (whose description I simplified for this question). This enters the category of evoqued response and involves some non-linear processing. Some of the alternatives I have tried:


Blanking the interference before it hits the filter. This requires precise synchronization that is not always available. 
Remove the real-time aspect and process the data non-causally. Long data records are still required due to filter transients, initial conditions are critical (and, of course it is not real time). 
Model the transients and remove them with data fits. Precise synchronization is no longer needed, but this might introducers own artifacts.
Any filter with a DC gain of zero and, for most other frequencies, a gain of (or close to) 1, is a DC blocking filter.

So just make a high-pass filter (HPF) and put the corner frequency as close as you can to zero.

Of course, when the system is switched on, there will be a transient from blocking DC of 0 to blocking DC of whatever value it is.  Without prior knowledge of what the initial DC is, I do not see how you can assume the initial value is anything other than zero.  So all of the initial states of your HPF are zero.  But once the turn-on transient is over, there should be no other transients unless the DC component has a sudden change (like a step function) and is not just "trending" to another value.

If this is done in fixed-point, you will have some serious numerical issues.  You might even have serious numerical issues if it's floating-point and your HPF corner frequency is very very low. You might want to look at this old thing from me or this article from IEEE Signal Processing magazine.  I dunno where to find it free.