Try this:
var data = _session.QueryOver<Staging.Case>()
.WhereRestrictionOn(x => x.AgencyId).IsIn(agencies.Select(a => a.Id).ToArray())
.List();
EDIT: If you don't need the agencies afterwards - you can optimize a bit by going:
var agencyIds = _session.QueryOver<AgencyRep>()
.JoinQueryOver<AgencyRepsSecondaryAgency>(r => r.AgencyRepsSecondaryAgencies)
.Where(a => a.AgencyRepId == user.Id)
.Select(a => a.Id)
.List<long>(); //if your .Id is of type long - replace with the correct type
var data = _session.QueryOver<Staging.Case>()
.WhereRestrictionOn(x => x.AgencyId).IsIn(agencyIds.ToArray())
.List();
That saves a bit of data sent over the connection