I think it may be very hard to do what you are asking. Since you are looking for a list of events and using generic relations, your only bet is probably to add some SQL via the .extra() filter. I'm not sure I would even know what SQL you would need to run for this since it would probably need GROUP BY and HAVING clauses.
As an alternative though, consider adding a BooleanField to your event object called latest. Then in the save method of your event, write some code like this:
def save(self, *args, **kwargs):
similar_events = Event.objects.filter(content_type=self.content_type,
object_id=self.object_id)
later_events = similar_events.filter(date__gt=self.date)
if later_events:
self.latest = False
else:
self.latest = True
similar_events.filter(date__lte=self.date).update(latest=False)
super(Event, self).save(*args, **kwargs)
Then to get your list of events simply do this:
Event.objects.filter(latest=True)