Any half-way decent compiler will put out the same code (unless == and != have been overloaded, as mentioned elsewhere) so optimization questions are irrelevant.
I don't think I've ever seen "if(!(a==b))" outside of a bigger conditional where it is clearer to not use DeMorgan's theorem, but I guess I could see it as a way of emphasizing that the two values really should be identical and there's something deeply wrong if they're not. However a honking big "throw OmgICantBelieveThisHappenedException()" on the next line would be even clearer. :-)
Other than these two situations I have to agree with the "use !=" camp since it's clearer when you skim the code. The '!' can be easily overlooked, especially with some formatting conventions.