imagine a banking system, but distributed over thousands or hundreds of thousands of computers. The computers together hold a database of transactions, similar to the database clearing banks or credit card companies hold: X transferred something to Y, Y transferred the same thing to Z.
No one computer manages this database; they all run the same software, which collectively distributes the knowledge and procedures that make up this set of accounting books.
As well as this database, the computers also generate unique numbers, at a slow but adjustable rate. These unique numbers make up the only "things" that can be recorded in that transaction database. So when X is recorded as transferring a thing, it can only really transfer one of these numbers.
There aren't many of these numbers around to begin with, because they're so hard to create. You create them by doing the work of checking and recording the latest transactions in the database. If you do that, you get one or maybe more of the unique numbers as a byproduct.
Got that? Well, don't worry if you didn't, because here's the real meat of the Bitcoins idea. Think of the unique number as coins, and of the shared database as a record of who has what coin. You can use the Bitcoin system to "pay" someone in these coins - I just record the transaction of my numbers to your computer in the global database. If the database shows that I had those Bitcoins originally, and the system successfully records the transfer, then I've effectively given my Bitcoins to you.