How are you running the code? What IDE are you using? PythonWin for example will not clear out items from memory when you run the code.
In addition, you can delete objects you are no longer using, for example: del ListDatabase, ListDatasets at the end of your code.
You might want to consider putting calling your code from a toolbox script, so a new python instance spins up every time you run the script.
Other factors include:
- hard drive speed
- network speed
- RAM in machine
- CPU speed
- Size of feature classes copied
Nothing really jumps out at me besides not managing your objects.
How does this function compare to arcpy.CopyFeatures()?
Hope this helps.