Personally I prefer the first option, because it more or less follows the concept of variable -> operator -> constant.
The second option has the 'benefit' that if s is null, it will return false, instead of throwing a NullPointerException.
I actually like that it throws a NullPointerException, because it indicates that something in my program might have gone wrong. Others disagree though.
As a rule, I much prefer clear, obvious code. Thus, I prefer
if (s.equals("Foo"))
just because its obvious in a nanosecond what its doing. We write our software as much for the ease of future readers/engineers as we do for the ease of compilation and execution.
For me it depends. If the variable shouldn't be null I use s.equals("Foo"). Otherwise, being lazy, I prefer "Foo".equals(s) over s != null && s.equals("Foo").