This is what worked for me.
You have to be prepared to leave Sprint though.
Talk about you would like for Sprint to move up your upgrade date, be very nice to everyone. The first rep will not have the power to do it, tell him to transfer you then because you would like to cancel service.
Explain that you really wanted to get the evo 4g and the 2nd phone you would want is the new iphone, since the unlimited iphone contract is going away in 4 days, you either want your eligibility moved up, or you want to cancel service.
At this point the rep that your talking to should have the power to change your upgrade date, this is also the person that has the power to give you a $10 discount for the next 24 months.
At this point if they still refuse to move you up I would be so pissed that I would cancel.
I bought my Pre in the first half of June, they said my upgrade was not eligible until July. I went to the sprint store, they couldnt help me, I called CS he couldnt help me, I told them I want to cancel then, the next guy I was transfered to was awesome, had lots of pull, and moved up my eligibility to May. He then also kept trying to get me to ask about a discount. Hinting at it kind of, so I did, and he said I can give you a $10 credit for the next 24 months. I was so stoked. Made me a really happy customer.
My original upgrade was on July 1 and it was moved up to May during May.