It is charged by the lender taking on the debt, usually in exchange for a promotional APR, such as 0% for 12 months.
This is generally in the range of 3%[most cards issued by Citi Bank, Chase Manhattan Bank, etc,.] to 5% [Discover, Diners Club etc,..]. Though these really depend on any special offers that the customer may have.
In the past, it was common for credit card issuers to place a cap on balance transfer fees, such as 3% or $75, but in light of recent legislative changes, it's now quite common to see no maximum fee.
"Generally there is a minimum amount you must pay to transfer a balance, such as $10, assuming it’s not a no fee balance transfer offer." 
However, there are occasionally no fee balance transfer offers, where no balance transfer fee is charged. Of course, these have become much less common post-economic crisis.
It's also possible to get the balance transfer fee waived, though you'll need to convince the credit card issuer.