Updating PIC18F4550 through its USB?
It's been many years since I was programming the PIC18F and I had to go back to your datasheet to refresh some of my memory about it. Now that I've taken a moment to recall some details, I think I can spell out your situation a little better. No solution -- that will be for you to work out. But I can point out the issues, at least.

Since about 1990 or so (might be \$\pm 1\:\text{yr}\$ around that point), Microchip has been very good about providing details on how to program their devices. (Note: I think I was the first person to convince Microchip to send such information without a signed non-disclosure because I certainly recall Chip's shocked reaction [owner of Parallax] that year when I told him I had a copy after spending a few weeks convincing Microchip to provide it and told him I hadn't needed to sign anything to get it.) In your case, go to the main Microchip PIC18F4550 web page and find the "Documents" tab and click it. That will take you to the page where you can find the PIC18F2XXX / 4XXX Flash MCU Programming Specification.

Note: Microchip continues to update its datasheets, errata, and other PDF documents related to their MCUs. I will be providing direct links which are valid at the time of this writing. In the future, it's best to go to the main web page mentioned above and proceed from there for the newest PDF documents.

The programming specification tells you how to program the device. There you will quickly see the following:


  PIC18F2XXX/4XXX Family devices can be programmed using either the
  high-voltage In-Circuit Serial Programming™ (ICSP™) method or the
  low-voltage ICSP method.


This means you've got two hardware options for programming these devices. That's it. Everything else will require software running on the device. (Assuming the hardware supports such things -- not all do -- but it does in this case.)

If you go to the PIC18F2455/2550/4455/4550 Datasheet, you will see in chapter 6 the following:


  A write to program memory is executed on blocks  of  32  bytes  at  a 
  time.  Program  memory is erased  in  blocks  of  64  bytes  at  a 
  time. A  Bulk  Erase operation may not be issued from user code.


In effect, this means you can actually write your own code that will modify the flash memory used to store code. In short, you can re-program the device using your own software to do it. Since the PIC18F4550 includes a USB 2.0 compatible peripheral, this means that with the right external added hardware and with the right software you write, you can achieve the goal of updating software over USB.

USB is documented in chapter 17. If you find or write code to support your MCU as a HID device, then one good option might be to act like a virtual COM port over USB. Most host operating systems supporting USB include built-in HID drivers for this purpose and that saves you from having to write your own code on some host computer. The host operating system can, in this case, provide emulation of a COM port using the USB port for the actual physical transport of data back and forth. To the host software, it looks like a COM port. But you will have to write your own driver on the PIC18F4550 to exchange information per the USB 2.0 standard. (No faster than once per millisecond for full speed interrupt transfers and I think at most 64 bytes per transfer -- memory serving.)

You can look for software someone else has already written. If you can't find something that "just works" according to your needs, then it would certainly be a good idea to download Microchip's documentation on their bootloader and its transaction format for transferring code. Might be some useful ideas in both that you can borrow.

It's also a good idea to think for yourself, as well. There are many different ways to organize your software design and you may be able to break up your software into distinct modules that are individually replaceable without having to download everything each and every time. And/or other ideas to consider. So think closely about this and then formulate an approach.

By the way, you linked to AN851, written 2002. But the correct link I get from Microchip's page for the PIC18F4550 is AN1310 -- High-Speed Bootloader for PIC16 and PIC18 Devices, written 2010. Perhaps you could look over that documentation, instead?