Nunca he hecho algo asi, pero lo que haria seria el software en dos partes, una que seria tu programa como tal y otra el sistema para actualizar, esta parte se conectaria a un servidor y recuperaria la version mas reciente del programa (si tienes un servidor http y que soporte asp o php que regrese un documento con unicamente el numero de version para mas facil, si es en una intranet entonces puedes recuperar un archivo y procesarlo en local para extraer el numero) y la compararia contra la que esta en tu pc, lo ideal es que la guardes en un archivo (encriptado de preferencia para que nadie mueva ahi).
Despues si el numero de tu version en pc es menor que la ultima version procedes a descargar todos los archivos, aqui tambien seria conveniente que al comprobar la version tambien se te diera la lista de los archivos que componen la version y asi procedas a bajar uno por uno, ya dependeria de que tipo de servidor tengas, pues si es http, ftp, etc tendrias que usar las funciones adecuadas para bajar archivos de la red usando java, y si es local pues con las funciones de copiado de archivos bastaria, estos los copiarias a un directorio temporal y te recomiendo que compruebes primero que los bajastes todos y que esten sin problemas, lo ideal seria que esa lista de archivos incluyera el md5 y lo compares contra los archivos que bajaste, ignoro si se puede hacer eso en java pero sino puedes usar este programita que funciona en msdos
http://www.elguille.info/colabora/MD5_checksum.aspx el cual te retorna el md5 de un archivo, necesitarias redireccionar esa salida a un archivo o ver como leer la salida directo desde java, tambien te anexo este
http://www.erikburd.org/projects/crc32/CRC32Dos.html que comprueba el CRC de un archivo, el primero es de dominio publico y el otro me parece que es freeware.
Ya cuando tengas tus archivos descargados solo los copias a tu carpeta del programa y de esa manera el sistema estaria actualizado, solo borrarias tu archivo temporal para que todo sea transparente, ojo, necesitarias no estar corriendo tu programa principal para que esto sea efectivo, por esa razon el programa de actualizacion deberia correr primero antes de iniciar tu programa, si usas un archivo bat para cargar tu programa llama primero al sistema de actualizaciones y cuando termine ya llamas a tu programa, saludos.