ir function stuck

  for(i = 0 ; i < 11 ; i++)                            
      if(data[i] == 1) result |= (1<<i);

You are missing curly braces. Without them, to us mere mortals, the intent is not clear.

      case 64:                            
        desired=100;                       
        break;                                 
      case 1088:                           
        desired=0;                          
        break;      
      case 128:                           
        if (desired < 100) {  desired=desired++; }
        break;
       case 1152:                          
        if (desired > 0) {desired=desired--;}
        break;

Magic numbers suck.

  lcd.print(desired);
  lcd.print("  ");                
  light();                            
  getIRKey();

Print the value modified by the getIRKey() function, then call the getIRKey() function. Do you not see a problem with this order?

i have deleted everything not important, like the stepper motor controls, to get the code it's simplest form possible.

So, in this code, there is no motor moving/not moving, so that problem has gone away. What problem does this code have?

Ken Shirrif wrote a nice IR library, using interrupts. Why are you not using it?