BUG delayMicroseconds(input), output=input/0.75

Note that the other instructions in loop() especially digitalwrite() also consumes time.

have a look at - Arduino Reference - Arduino Reference - for faster writing.

(especially if you prepare the bitmasks in advance).

And I would remove the constrain from the switch and use only 2 if statements.

partially patched - not tested

void loop() {
  if (irrecv.decode(&results))
  {
    switch (results.value)
    {
      case UP    : if (BLDC_us < 1500) BLDC_us++; 
                       break;
      case DOWN  : if (BLDC_us > 750) BLDC_us--; 
                      break;
      case POWER : BLDC_us=1125; 
                      break;
      default: break;
     }
    irrecv.resume();      //Prepare to receive the next value
  }  
  //digitalWrite(BLDC, HIGH);
  PORTB = highmask;
  delayMicroseconds(BLDC_us);
  // digitalWrite(BLDC, LOW);
  PORTB = lowmask;
  delayMicroseconds(BLDC_us);
}