Sensing when a network is available
Well, if it's for the life of the program as you say, then no. When the program ends, all memory will be released.

Second, this all looks like one class. So root references will be removed when the class is GC'd and no memory leak will occur.

Lastly, write

        if (btnSync.Enabled == true)
            btnSync.Enabled = false;
        else
            btnSync.Enabled = true;


as

        btnSync.Enabled = !btnSync.Enabled;


Much more concise.