Columns in Cassandra are stored in order. In your example, sessionId is the most significant, followed by token, and timestamp is the least significant. In other words, columns are sorted by sessionId, then token, then timestamp.
If I understand correctly, you're trying to query for the columns with a specified sessionId as well as token and any time. For the reasons above, the columns with matching sessionId and token are stored contiguously. You can query them with any date by using min/max dates in the following way:
startTime = new Date(0);
endTime = new Date(Long.MAX_VALUE);
SessionEvent from = new SessionEvent(sessionId, token, startTime);
SessionEvent to = new SessionEvent(sessionId, token, endTime);
RangeBuilder rb = new RangeBuilder().setStart(from).setEnd(to);
OperationResult<ColumnList<SessionEvent>> result = keyspace
.prepareQuery(CF_SESSION_EVENTS)
.getKey("UserId1")
.withColumnRange(rb.build())
.execute();