To be fair, you can't actually rule out anything. It's just that what vsync does is it basically waits for the entire frame buffer to be completely filled before it swaps. Artifacts, especially triangular-shaped, means something has gone wrong during rendering itself, not the buffer swap.
That's how I understand it. The thing is - I don't claim to be OpenGL expert, I'm still very much new to it myself.
Try also looking into how you're handling creation / update / destruction of VBO's. Because that's what's basically is getting rendered, I think - some triangle with a texture in a VBO where it souldn't be.
Perhaps another VBO stays active while you add in a new one when you change text, and it somehow gets bound and rendered? I'm shooting blindly here, but perhaps it gives ideas.