Cambia el doInBackground por esto:
protected Void doInBackground(Void... params) {
while(true){
progress = (progress + 5)%100;
publishProgress(progress);
SystemClock.sleep(100);
if (condicionEspecial)
return;
}
}
condicionEspecial es lo que hace que se salga del bucle y doInBackground termine.