It's because the NMI never gets triggered. You need to enable NMIs through the PPU Control Register 1 ($2000). To enable the NMI you just set bit 7. Put this somewhere before the LOOP;
lda #$80
sta $2000
The PPU control registers do a lot more so you should be familiar with the various functions they provide;
http://nesdev.parodius.com/NinTech.txt
(near the bottom of the page is a table listing what each bit of PPU 1/2 Control and PPU Status does)
It's also common practice to 'acknowledge' the NMI in your NMI code by 'reading' the PPU Status Register ($2002)
bit $2002
at the start of the NMI.
Something else you should do in the NMI is save the contexts of the A, X and Y registers - this is because the NMI can occur at any point in your background loop and once the NMI has finished, the register contents could have been changed. You use the stack instructions PHA and PLA.
NMI:
pha ;push A onto stack
txa ;transfer X to A
pha ;push A onto stack
tya ;transfer Y to A
pha ;push A onto stack
bit $2000 ;acknowledge interrupt
;do other stuff
pla ;pull top of stack to A
tay ;transfer A to Y
pla ;pull next by off stack to A
tax ;transfer A to X
pla ;pull A off stack
rti
The stack is a LIFO buffer (last in, first out) so you restore the registers in the reverse order to what you saved them. Because you can only push (PHA) and pull (PLA) a value to/from the A register, in order to save the content of X and Y you transfer them to the accumulaor (A) first when saving, and then reverse the procedure for restoring.
Edited to add:
In fact, most people clear the two PPU Control registers at the start of the reset code too:
PPU0 EQU $2000
PPU1 EQU $2001
RESET:
sei
lda #$00
sta PPU0
sta PPU1
ldx #$FF
txs
etc.