If you have any offsite gateways, it's very possible that a user clicks to go offsite ( to complete the transaction) and then cancels, or clicks the back button. And then submits the order again. Basically the first order was generated, but not completed… so it's processing. And it's never going to finish processing. Generally speaking, you should consider processing orders that are older than your session expiration time as non explicitly canceled by the user.
Each time a checkout form is submitted, there's a record of that. If it goes through, it completes… if it doesn't, internally it's marked as declined, failed, or processing, canceled, refunded, etc. If you have statuses mapped to these things, when something outside the system notifies it of a change, the EE status will change. In the case of a processing order… the customer basically started the transaction and then just abandoned it.
Typically all offsite transactions start their life as a processing order… when the offsite system completes the order, then it updates their status. If the customer doesn't finish the transaction offsite, and doesn't use any of the methods that might trigger an official cancellation, it just sits as processing forever.