Hmmm...yeah it could be that the body diode is turning on in the MOSFET that is meant to be off...that could be what is happening. I assume you know how to apply the proper gate voltage to switch a PMOS on and off right? The potential difference between 7V and 4V is definately high enough to cause the body diode to conduct.
Have you tried sticking a diode at the drain (or source) of each MOSFET to stop this from happening? THis is what was meant earlier by using diodes for each battery. It prevents one battery from discharging into the other.
Maybe this is a silly question because I don't know your application...but are you able charge up one source before the other empties, can't you jsut power it straight off the source? The only (obvious situation) that I can think of is for battery to power the device in sleep mode where very little current is used so that the second battery can be charged up- presumably the sleep mode uses less current than is being charged. Because if you use energy faster than you can charge the auxillary power, the device ends up dying. If you can charge up the auxillary power as quickly as the device uses power, then you might as well just power the device directly.