In the case of value types, such as integers, there is no functional difference between the two; however, the Equals method will cause one of the two to be boxed into a reference type, and is thus less efficient than using the != or == operators.

In the case of reference types, the != and == operators perform an identity comparison (i.e. whether or not the references point to the same object). The Equals method attempts to perform a value comparison (i.e. whether or not the references point to objects that both represent the same data [and may or may not be the same object]).
Classes usually provide their own implementation of the Equals method in order to facilitate correct value comparisons between instances of their type.