PWM 2Khz con Timer1 en modo CTC, no lo consigo

Veo un pequeño error:
_frec nunca puede valer 0 porque te daría error en las divisiones.

F_CPU / 1024 / _freq

arrojaría un resultado indeterminado.

SI bien en este caso particular no te genera problemas porque map() le altera el valor antes de las divisiones, siempre ten presente estos detalles que se pueden volver un quebradero de cabeza.

Me parece que sería mejor que hagas cambios en los registros únicamente si has modificado la posición del potenciómetro

Prueba así

int duty = 50;
int _freq = 1;
int pinPote = A0;
int pote;
int poteAnt = 1024; 

void setup() {
  DDRB |= (1 << DDB1);
  // modo ctc
  TCCR1A &= ~ (1 << WGM10);
  TCCR1A |=  (1 << WGM11);
  TCCR1B |=  (1 << WGM12);
  TCCR1B |=  (1 << WGM13);
  TCCR1A &= ~ (1 << COM1A0);
  TCCR1A |=  (1 << COM1A1);

  //1024
  TCCR1B |=  (1 << CS10);
  TCCR1B &= ~ (1 << CS11);
  TCCR1B |=  (1 << CS12);

}

void loop() {
  pote = analogRead(pinPote);
  if(pote != poteAnt){
    _freq = map(pote, 0, 1023, 300, 1900);
    ICR1 = (F_CPU / 1024 / _freq) - 1;
    OCR1A = (((F_CPU / 1024 / _freq) - 1) * duty) / 100;
    poteAnt = pote;
  }
}

a ver si deja de hacer esa "pausa" que nos comentas.

El valor de poteAnt lo fijé en 1024 porque es un valor que nunca podría alcanzar pote (así me aseguro que se cumple la primer comparación)

Saludos

PD: Me refiero a la primer comparación recién iniciado el arduino.

Me di cuenta que no te dije dónde veia el error, lo digo por ésto

int _freq = 0;

Si bien, como ya dije, en tu caso no molesta, es buena práctica no asignar valores iniciales que podrían traer problemas en otra situación.