WinXP certainly complicates matters because a lot of the tools since Win7 just aren't there for XP. But thinking about this, I have to ask this question: How is an .LDB file created? And the answer is, someone has to open the database file. So the NEXT question is, how do I do that? There is more than one way, so I'll ramble a bit and see if it rings any bells.
The first and most obvious way is to launch the App with a click or double-click (depends on Windows settings for task launching as to which) or click-Run.
The next way is for the code to contain an explicit OpenDatabase pointing to the file for which you have this messy .LDB file. If you programmatically open the .MDB file, you will also get an .LDB file. If you then have a problematic exit, you might not get to clean up that second opening step.
I don't think a virus CAN create an .LDB file so easily and doubt that malware would do a "phantom launch" of an Access app because they would have to be written for a fairly specific type of malicious behavior than somehow, despite its complexity, seems a bit too innocuous for a virus or trojan. The question would then be whether you have any other DBs on the machine that have shown similar behavior.
By any chance, do you have code to do late mapping of tables? Because that would surely use an .OpenDatabase method. And when this locking occurs, does your app take some sort of unhandled error that forces a reset? Because that might do it.