Utiliza un control ActiveX ( .ocx ) o una libreria ( .dll ).
Existen varios programas al respecto en internet, pero si quieres hacer el tuyo entonces.
Utiliza el Winsock de Microsoft que viene con el visual basic ó el control del Navegador para revisar periodicamente en tu página web si existe una nueva versión.
Si existe utiliza el control para que baje el archivo de internet.
Cuando termine de bajar, copialo a la dirección donde va a quedar (Nunca uses la dirección donde va a quedar directamente, por que si se queda a la mitad, tu archivo queda truncado).
Si el archivo que quieres actualizar es el mismo programa que estas corriendo, no puedes sobreescribirlo, entonces puedes usar el registro de windows (Usando APIs de windows) para ejecutar un codigo la siguiente ves que inicie la computadora. El codigo que ejecute puede ser algo tan sencillo como un copy para sobreescribir el archivo.
Si eres ingenioso puedes hacer una forma de que un tercer programa se ejecute y haga la sobreescritura del archivo. ASi no tienes que pedirle al usuario que reinicie, solo que cierre el programa y lo vuelva abrir.
Espero halla quedado claro. Existe mucha ayuda en internet que habla al respecto.