pwm with delay

You had duplicate declarations if "i" there. This is a cut-down version:

int LED = 3;
unsigned long interval = 100;
unsigned long lastcheck = 0;

void setup()
  {
  }  // end of setup

void loop()
  {
  for (int i = 0; i <= 255; i++)
    {
    if (millis() - lastcheck > interval)
      {
      lastcheck = millis();
      analogWrite (LED, i);
      }  // end if time up
    }  // end of for
  }  // end of loop

Although I must confess that on my test board at least it isn't quite doing what I expect. The duty cycle seems to be jumping in a strange way.