Well, you can simplify it to (log(log(a)) - log(log(b))) / (log(log(a)) - log(log(c))), which I think is slightly easier to calculate. Overall, this seems like a good method... does it produce appreciably different images? Also, what's the computation time look like?
I meant was there any way to say eliminate log(a)

As to calculation time obviously using the fixed estimate of divergence is faster as it reduces the divisor to a fixed constant at runtime instead of 3 logs and the extra |zold|

The difference between the times taken is greatest when using the smooth iteration value *solely* for delta DE since then using the estimated divergence simplifies the calculation of the difference in smooth iteration values of two points considerably.
Having said that it's not a massive difference, for instance a z^8+c Mandelbulb rendered using calculated divergence that took 1 min 7 secs on my system took 1 min 2 secs using estimated divergence.
In practice whn calculating the divergence then using:
smooth iter = iter + (log(log(bailout)) - log(log(|finalz|)))/log(log(|finalz|)/log(|zold|))
Is probably optimum for speed, no change to your numerator because the bailout part can be precalculated here giving just 2 runtime logs and one subtract, the denominator changed to the dividing form because it reduces things from 4 logs and a subtract to 3 logs and a divide.
It's essentially what I was already using except it's eliminated some multiplies by 0.5 that I should have realised are not necessary

As to images, they won't be any different in my case, this just slightly optimises the calculation

Points to note about using the method are:
1. In some cases using log(|finalz|)/log(|zold|) can be reduced to log(power) where power is the estimated divergence of the fractal *however* this should only be done if divergence is consistent over the whole image otherwise there will be discontinuities at iteration boundaries.
For say z^p+c this means using power=p and a fairly high bailout - say at least 10,000.
For fractals where the divergence varies across the fractal a lot more (such as the standard "Lambda" Mandelbrots) then it's better to use the calculated divergence.
If it's possible to use the fixed estimate divergence (power) then the calculation of difference in smooth iteration for two points on a viewing ray simplifies to:
i1 - i2 - log(log(|finalz1|)/log(|finalz2|))/log(power)
i.e. the bailout terms from the two smooth iter values cancel out - however you can't do that when using the calculated divergence because they don't have a common divisor.
2. Using the calculated divergence (in 2D anyway) means that smoothing works even for very low bailouts (even 4 on z^2+c) and it also produces good results on say exp(z)+c or Barnsley1 or Barnsley2 or sin(z)+c etc. without breaks on iteration boundaries (except where iteration changes really are geometrically discontinuous).
3. Using the calculated divergence also makes the smoothed iteration calculations more "black box" since the only value from the main formula required is the bailout value.
4. For more complicated fractal formulas (eg. 3D/4D) because calculation of smooth iteration is only done once at the end of the iteration loop the extra cost of using calculated divergence is usually very small compared to possible optimisations you can make to the calculations within the iteration loop itself.