It is quite an old thread but there are updates on this front, sorry for not answering earlier.
In the current nightly version there is a little rework of the cg solver, you can get it as a basematrix object now and use either its Solve method or do a matrix vector product. You can afterwards get the iteration count and the convergence history:
Code:
from ngsolve.krylovspace import CGSolver
solver = CGSolver(a.mat, pre.mat)
u.vec.data = solver * f.vec
print("iteration count =", solver.iterations)
print("convergence history = ", solver.errors)
The design and names might still change, thats why it is not yet exposed to the solvers, but if you want to get anything else let us know.
Best
Christopher