I'm using Windows and OpenTK 2014-01-15
It seems I need to ensure that a GLControl's context is current before I set the VSync property on it, otherwise the WGL call will go to the wrong context. None of this is much of a surprise, but it seems semantically that when I set a VSync property on a control (Which could only be implementing that through its owned context) or even directly on the context, the code should be ensuring that the correct context gets changed.
It looks, from the code, that Platform.MacOS might not suffer from this problem: the AGL_SWAP_INTERVAL gets set on a specific handle, which would suggest that it gets set on the correct context, not the current context. Therefore, this might be a difference in behaviours between the platforms; however, I haven't tested it.
I recommend that OpenTK contexts platform implementations change the context when necessary, set the properties, and then change it back to whatever it was before. I can submit a patch which does this, if you wish. On Windows, at least.