To use a bootloader you add to code
Code:
define LOADER_USED 1
and if I understand what this does correctly, it moves everything down the stack, some fixed size (4 bits, or is it 4 bytes?) anyway, what happens if you forget to comment out this code when not using bootloader?
If as mister_e says ICPROG doesn't support 18F 2550 it's never going to program it properly.