My question involves landlord-tenant law in the State of: Virginia

I signed a lease in July 2011, fully aware of a 2'x2' hole in the roof. I was assured that it would not leak when it rained, and it was covered with a large tarp upon move in. I was promised by my landlord that the roof would be fully repaired by October of 2011, and language was put in the lease to take off $100 per month off the monthly rent until it was fully repaired.

The landlord mislead me. Every time it rains, the hole leaks. I pierced a hole in the tarp to allow for proper drainage, and have been pressing my landlord about repairing, but every time I speak to her, she tells me about how she can't afford to repair it right now, but she will next month, blah blah blah. Is she allowed to postpone repairs simply because she says she can't afford them?

I've suffered water damage, and recently noticed a moldy smell coming from the undersides of my couches, meaning they are water damaged.

My lease ends July 2012, but I'd like to move as soon as possible.

My questions:

a) Do I have legal grounds to terminate my lease early?

b) If my renter's insurance doesn't cover water damage to my furniture, can I take her to court and sue her for damages?

c) Any general advice for me? I've never dealt with a situation like this before.

Thanks