Sounds like your wallet is corrupt. There is a chance that it is unrecoverable. You should always make backups of your wallet.dat file
Try what hxtop said and import your wallet to another client. Also worth a try is using pywallet to dump the private keys from your wallet file.
In My opinion ,the bitcoin wallet client is more problem..
but i always thank your advise.