Li-ion batteries are usually charged by specific charger controller IC, which tracks charging current, voltage of battery, temperature, etc.
It all depends where the charging controller is located - if it's in the device, you can get away by feeding it with other voltage than 4.2, if it's in a charger, well, you'll have to make yourself a proper li-ion charger.
no way to tell without opening in any case...
As Madmanguruman noted, you did not show your complete schematic, so it was not possible for us to diagnose the problem.
The reason you were seeing some problems when you plugged your USB cable, is because there was already a voltage present on the V_BUS before you connected your cable. Also, this voltage may even be fluctuating.
Here is the reason why; the PIC microcontrollers generally have protecting diodes, which are called internal clamp diodes, to both rails on their input so that any over-voltage, that is voltages higher or lower than a diode drop from Vcc or Vss. MCP2200 is rumored to be a PIC18F14K50. Here is the pseudo block diagram of the input pins of MCP2200:
When there is no voltage present on V_BUS, which is the case of an unplugged USB cable, the applied voltage, hence current, flows through the input pin, which is Tx of your microcontroller, through the upper diode, to the V_BUS. There you have it, 4.3V on your V_BUS, exactly one diode drop lower.
Here is what to do; make the Tx pin on your microcontroller LOW if you are bit banging, or disable the UART module if you are using the hardware serial peripherials, until you somehow enter the serial mode.
If there is not some kind of "serial mode" or "PC connection mode" in your application, you can detect the connection by checking for a serial input, for example, start the module (or make TX pin HIGH if you are bit-banging) after you receive a character, say; S
.
When you start the serial port, you make the Tx pin of your microcontroller HIGH, after that be sure to transfer a dummy character or MCP2200 will get confused and you will not be able to communicate over serial.
Best Answer
"I wanted was to be able to drain the power from the USB port up to 500mA and the remaining would come from the battery."
An analogy: Your car has a battery. It is charged from the alternator. All power used is coming from the battery, BUT if the battery is somewhat discharged (say you just started it in sub-zero weather,) you will get power from the alternator but it comes through the battery. (Of course if the battery is completely discharged you will need to run the engine for 30-60 minutes so the alternator can recharge the battery with enough energy to start the engine the next time.)
If I'm reading the datasheet correctly the LTC4055 is very much like an car's alternator. Have your PCB connected directly to the battery. The LTC4055 can be attached between the USB and the battery.
The question then becomes what happens if the battery is completely discharged?
Can the LTC4055 supply sufficient current to recharge the battery while letting the USB port power the PCB? Again referring to the datasheet the LTC4055 goes into a low current trickle charge mode if your battery is completely discharged and the rest of the USB current goes to load. Sounds like it is the right approach, or at least worth trying.