This has been observed before, and in our case, it has occurred due to issues in the offline behaviour of the POS Module. Not sure if this applies to you, but consider the following case:
When an order is created in the POS session, there are a number of associated attributes to the order object along with order lines, such as user id, session id etc. Now, suppose the current ongoing session id is '1', then the order object in the POS session will also have a session id attribute with the value '1'.
When we press the 'Validate' button, the browser sends the order object to the python function in the backend to be processed and inserted into the database. However, until the operation is completed, a copy of the order object remains in your browser. In case the operation fails, the browser will attempt to send the order object again.
Now, coming back to the 'Validate' button. Suppose you press Validate and close the session/browser immediately, the copy of the order object will remain in the browser cache (with the session id '1'). At the end of the day, you will Close and Validate all entries and all the orders' states will change from 'Paid' to 'Posted'. You then start a new session, so now the current session id is '2'. However, when you open the POS Session interface, that copy of the order object that was remaining from the previous session will be inserted again to the database. Since this order object still had the old session id, you get an entry into the database with 'Paid' status for session id '1', which had already been closed.
This is what has happened in our case. My apologies for explaining this very poorly. This is one issue which exists, at least in OpenERP 7, and causes a lot of issues in the Accounting at the end of the day/month. Hope the explanation makes sense !
Do you use the POS module in offline mode?