The developers who will come solely for money are rarely the ones you're going to want. And, even if they were, you're unlikely to retain them unless you're the biggest dog on the block with the fattest wallet.
That doesn't mean you can get good, experienced developers on the cheap, either. Salary is still the first thing developers are going to check in a job listing. If you're not in the ballpark, they're never going to read further.
To get good developers in the door, your job listing should show that you are using up-to-date technologies and that you know what you want. If you're listing more than 4-5 technologies in your listing, you look like you don't really know what the developer is going to be doing. It also helps to mention the industry you're in and, if possible, give a hook as to one thing that will be interesting about working for you.
Once you get a good developer in the door, they're going to be looking for three big things: (1) Do you know your ear from your elbow? There are far more bad project managers than good ones, so this is important. (2) Are you going to expect the developer to make up for management's bad decisions through long hours and weekends? (3) Are they going to be bored silly writing code for you?
The best thing a project manager can do once they have a developer in the door and have established their basic competency is leave them alone to talk with a member of your team. For the ones who have a lot of options as to where they work, the job atmosphere is often the make-or-break factor.
So, you wanted a list. Here's the order of things that it would take to get me to accept a job in your shop if I'm ever looking for one again:
(1) Money will get me to read your job listing.
(2) Current technology and a clear understanding of what you'd be hiring me to do will get me to call for an interview.
(3) A sense of process and management competence will get me to pursue an offer.
(4) A reasonable workplace with reasonable hours and interesting work will get me to take an offer.