There is always room for negotiation until both parties have signed a contract.
- Be honest
- Be prepared to walk away
Did you offer 28k because you really wanted the job? Because you're young and felt uncomfortable asking for what you really wanted? Because you expected that to be a starting point? Whatever the reason was, you're clearly now unhappy about the 28k, so if you want to reopen discussions, I would be honest about why you are doing it. For instance:
Hey hiring manager, when we just talked on the phone about salary I gave 28k when asked for a number. All the research that I've done says that market range for this position should be upwards of 30k. I know that I should have said that on the phone, and I apologize, but I want to make sure that however the final decision and negotiations go, that I feel comfortable about where we started from.
Time is of the Essence
Depending on where you are in the process, they may have to get the authorization of someone to give a salary offer at that level. If they've already gotten the okay from their bosses for 28k, and you ask for 30k, it will be far more difficult to change (and make them less likely to want to help).
If you want to discuss it, do it now, call up or e-mail sooner rather than later.
Be Prepared to Walk
Realize that what you are doing is saying, "I was not prepared and misinformed you over the phone. Regardless of that, I strongly feel that I should be paid more than when we discussed." This is not going to go over well with all companies, and it may very well reflect poorly on you as a candidate.
Consider whether or not you are willing to walk away if they offer you 28k. Think about if you are the best candidate for the job, and worth paying an additional 2k for. Make sure that you are willing to sacrifice this chance for a shot at an extra 2k/year. Some companies want employees to be happy with their salary, and are more happy to make considerations for the best candidates. Is this one of those companies, and are you fine with walking away if they aren't?