I agree with the other poster: ESB is a bit like SOA, a general definition that is used mostly as a marketing selling point than as a strict standard you must satisfy.
From Wikipedia:
Commentators disagree over whether
to define an Enterprise Service Bus
(ESB) as an architectural style, a
software product, or a group of
software products. While use of an ESB
certainly implies adherence to a
particular architecture, the term
“enterprise service bus” almost always
denotes the software infrastructure
that enables such an architecture, and
in essence, the ESB is considered a
platform to realize a service-oriented
architecture.
An ESB brings flow-related concepts
such as transformation and routing to
a Service-Oriented Architecture. An
ESB can also provide an abstraction
for endpoints.
ESB as a term seems to have been coined by Dave Chappel, who is (was?) technical evangelist for Sonic Software (and author "Enterprise Service Bus" - O’Reilly: June 2004, ISBN 0-596-00675-6). I have read the book and have attended a couple of seminars by Chappell, and I am afraid that the book itself is not much of help in helping you decide if Product X is a "true" ESB.
In general you should look for something message based (this was the original intent, apparently, even if some other companies, like webMethods, use the term for their product, which is more webservices-oriented).
The idea is to have all the "services" in your IT infrastructure being able to receive and send messages to each other. The ESB provides the routing, and has interface endpoints so that if your original application worked - for example - by invoking a JSP page via HTTP post, you have a small program that can receive a message, use its payload to post it via HTTP, interpret the result and build a message response with these.
Basically, imagine that instead of using webservices for everything, you use message queues, building routing stations, and interface between message queues and other systems. This is an ESB.