This is all fine and good until I have more than 1 customers who haven't paid. I somehow need to verify which customers have paid and which ones have not. But I cannot tell that by looking at the addresses of coins I receive via Bitcoin. Okay, maybe the items cost different amounts and I can distinguish the orders by looking at the price, but say all the items cost $5.99 so price alone can't determine the customer.
Is there a solution to this problem? Do I have to create a new address for every new order?
Interesting question. You could, as Neereus suggested, create a different bitcoin address for each transaction.
Another possibility would be to embed a text message in the transaction. There's no provision in the GUI for it, but the source code allows for it (it's just not implemented at the moment).