Well, being honest does not mean you've gotta be harsh. It's all on your tone of voice. Say, girl who's wearing a dress that really doens't suit her. Instead of saying "That looks horrible on you", you can say "I don't think that suits you, maybe consider something else?" And yeh, just your tone of voice - if you shout and gasp "That looks terrible!!!" - yes many will be offended. But if you say gently, "That looks bad." or "I don't like it" - it still gets the message across, but it's less offensive.
Always be honest though. I hate it when someone's dishonest. If you're honest to your friend, at least you're showing them that you respect them enough to tell them the truth. And how can you be a true friend if you lie? And if you always give the truth, yeh your friends may get offended at times, but they will always know it is the truth, so they'll trust you for it. They won't be second-guessing "does he mean that?" "what did he really imply?" - it cuts the confusion and encourages trust in the friendship, so it's gotta be good.
You just gotta find a girl who likes bluntness I suppose. I'm like that - like my bf's asked if I wanted him to tell me if I ever gained weight, and etc, and my response is - yes, of course. What good is it for him to lie? Does me no good now, does it?