Salary: Ask Early!
Personally, I've always at least evocated salary right from the first face-to-face interview, if not during the phone screening. And if going through an agency, I set a base salary and I explicitely say I won't look at the ones that are below this threshold.
It may sound harsh and cocky, but in the end you save everybody's time, and it's better to be told "I'm sorry, but I'm not the person you should talk to for salary negotiations, this is handled later on during the process", than to indeed show up in vain. I'm not saying that I downright demand to negociate it on the stop, but I request to know their ballpark (they may not have thought of one yet), and may give them my ballpark. You can bet they'll write that down and discuss it amongst themselves afterwards, which is what you want in the end.
Be upfront, be professional, and there's no harm done and no hard feelings.
The thing most people fail to understand when interviewing, is that the applicant is here to interview the company and its employees just as much as they are here to interview him/her. You're not hurting them, you are just openly discussing conditions. It's called communication, and it's healthy, as long as you keep it civil.
Salary Threshold Tips
Additionally, I'd recommend putting this salary threshold relatively higher than the actual salary I'd settle for, for multiple reasons:
It's a common marketing and psychological trick: the more expensive the better. It looks like you have more experience. Don't shoot too high, but be sure to not underestimate yourself. And even if you happen to shoot too high (be sure to correct that tough), it's better to look like a fool once than to get trampled.
Some agencies will still send you stuff through (because they are incompetent, or because their system doesn't handle limits, or because they do like you: they take chances).
It obviously gives room for bargain. For instance, to then give up some of that "soft" base against in favor of other benefits.