I suggest you remove the third parameter from the call to tone(), so that the output continues until loop() runs again and redefines the output frequency.
I don't know whether it's safe to call tone() very frequently - it seems to me that this could easily cause the output timing code to reset, preventing it from actually producing a changing output. It might be safer to slow down the loop() so that it runs e.g. once every 100ms so that you definitely have time to produce some complete output waves before the next sample.
What actual frequencies were you passing to tone() in the original, working sketch and how frequently were you calling tone()? Same question for the new, non-working sketch.
Is the hardware setup identical in both cases?