I assume the relationships are as follows:
has_many :events, :through => :personals
has_many :users, :through => :personals
My solution would be to use the auto-created association function for User "event_ids" that lists all of the event ids in User.events. The query to get what you're trying to do should be:
Event.find(:all, :include => :personals, :conditions => ["events.id NOT IN (?)", @user.event_ids])
And, unless you actually need the join, you can simplify:
Event.find(:all, :conditions => ["events.id NOT IN (?)", @user.event_ids])
The key is the SQL command, "NOT IN (x)". Also, note the "events.id" is plural for the model name, according to SQL convention.
Hope this helps...