Just define your SYNCPROC like they do in the Documentation:
private SYNCPROC _mySync;
_mySync = new SYNCPROC(EndSync);
Bass.BASS_ChannelSetSync(_stream, BASSSync.BASS_SYNC_END | BASSSync.BASS_SYNC_MIXTIME,
0, _mySync, IntPtr.Zero);
private void EndSync(int handle, int channel, int data, IntPtr user)
// the 'channel' has ended - jump to the beginning
So the _mySync is the global variable in this example.
What Problem are you facing that makes you think its a Garbage Collection Problem?