Immutable objects are useful when objects are generally shared - not just with threading, but in single-threaded programs also where an object has many clients.
For example, String is probably the most used immutable object in Java. It's immutable to stop users of that string from changing it's contents. If String was mutable, it would mean each user would have to create a unique copy of that string to ensure no-one else was changing it.
Immutable data also has security implications. For example, a security token associated with a user should be immutable, otherwise a rogue program could easily change the user associated with that token.