thanks a ton for your feed back!
Sounds like you've got a smart kid! Who is winning a battle that shouldn't be a battle.
Knock off the spanking. It won't work.
Do the timeouts by your rules and only your rules. Make it fair. Its ok for her to tell where and how long the time out will be. Just listen to her. Then do your thing. But be fair. Actually sometimes compromise works, if she doesn't repeat the behavior. If she does, then back to mom's way.
I can understand the yelling - you come home tired and bam! You don't have to punish her immediately. Take time out for yourself, calm down and then deal with her. If you have to wait to the next day to do so - then do so, it will drive her crazy by the way.
Counseling is good - go for it. If you have the time obtain a copy of Lynn Clarks' book SOS: Help for Parents. It will help a lot.
Good luck!