It's a good question and NAudio does not have a standardised solution for this yet. The WaveOut class has GetPosition, which will return the waveOutGetPosition (in bytes), which should allow you to calculate more accurately where we are up to. I think it returns the number of bytes played since the last waveOutReset function. I might change the public API in the future (e.g. to return a TimeSpan instead of a long), but let me know how you get on with it. To support other output drivers like DirectSound, Wasapi and ASIO would need quite different implementations (and with ASIO, you tend to be working at much lower latencies anyway).
Mark