I believe the choppiness is due to the interference between your forced ("hard coded") 60 fps and the display's refresh rate, which is only 60 fps nominally, but actually it's not precisely 60 fps. So the solution is to enable V-sync instead of the "hard-coded" refresh rate.
I tried to solve that with different refresh rates (up to 300 fps), but there are always hiccups with the display without V-sync.
I don't know about software "V-sync". I was trying to implement one for days, but I couldn't make it work. There isn't any functions that do "wait until refresh is ready" or that queries when the refresh is ready.
What's wrong with V-sync? The input lag it introduces? It's a bit different topic, try to look into that, but as I recall, you don't have much control over that. The video card drivers queue more frames for some reason, so the actually displayed stuff is always 2-3 frames behind.
EDIT: I didn't notice this one:
That's the user's problem IMHO, not yours. It's her responsibility to change the setting of her driver, not yours. You can make a comment about this in the README/Help/Requirements file, I think that would be enough.
So why not rely on vsync? Because some computers can force a disable on gfx card config
So just use v-sync (you can force enable/disable it in your software, if that's your problem. Maybe the ability to force it in the program depends on the driver or the video card, but I think it's doable)