Thanks all for your responses.
TomGeorge:
Hi,
Have you tried a different PWM pin?
Tom.. 
Yes I have tried various PWM pins (eg 2, 3, 12) with the same result.
Wawa:
Changing LED pin to 13 (onboard LED), and analogWrite value to e.g. 32 works fine (dim flashing onboard LED).
Leo..
I have tried disconnecting everything and using pin 13. Passing 0 and 255 to the analogWrite calls causes the LED to blink on and off as expected. Interestingly other values do not cause the same behaviour as using an external LED. I get a different flashing pattern with the internal LED (not 1s on and 1s off, more of a long flash followed by a short flash over and over). This happens for any value other than 255.The brightness is the same regardless of whether I use 32, 254 or any other value and I only get a stable 1s blink when I use 0 and 255.
Wawa:
Changing LED pin to 13 (onboard LED), and analogWrite value to e.g. 32 works fine (dim flashing onboard LED).
Leo..
vinceherman:
Then you describe a condition that does not do what you expect but do not show us the code.
Can you show us the code that does something other than what you expect?
Sure. The following prevents the LED from ever coming on. The only change from the working code is I've used 254 rather than 255 for the "on" analogWrite call. As I understand it, this should result in the LED coming on, albeit marginally dimmer.
int led = 9;
bool on = true;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
if (on) {
analogWrite(led, 254);
} else {
analogWrite(led, 0);
}
on = !on;
delay(1000);
}
The following prevents the LED from ever turning off. Again I've just made one change from the working code; using 1 rather than 0 for the "off". I would expect an extremely dim if not off LED here, but that does not happen.
int led = 9;
bool on = true;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
if (on) {
analogWrite(led, 255);
} else {
analogWrite(led, 1);
}
on = !on;
delay(1000);
}
vinceherman:
Also, in your description of what is connected where, you do not mention a current limiting resistor for the LED.
Most examples do put a resistor in series with the LED.
I actually did mention this but perhaps wasn't clear 
I have 2 x 100 ohm resistors in series with the LED. My circuit is basically the following, all in series (apologies for the lack of proper diagram).
Ground -> LED cathode -> LED anode -> 100ohm resistor -> 100ohm resistor -> PWN pin.
vinceherman:
Oh, using a multi-meter to read PWM is going to give confusing results. The pin changes from 0 to full voltage and back very quickly. A scope will show that graphically. Multi-meters, not so much.
With a 1s delay between each analogWrite call I hoped it would be enough to at least rule out an issue with my LED circuit. FWIW, when I use and 0 and 255 I do see the expected switching between 0 and +5v every 1s. Unfortunately I don't have a scope.[/quote]