I tell them the DC. It's realistic.
Anyone should be able to gauge their skill against the difficulty of a task, just like in real life. I don't withold from my players the difficulty of attempting what they want to do.
For example:
---------------------------------------------------------------------------------
PLAYER: "I want to make a jump across that chasm, how wide does it appear to me?"
DM: "About 20 feet."
*player looks over the Jump skill*
PLAYER: "I can clear that with a running long jump at DC 20 on my Jump check. With +10 to my Jump, I should be able to make that easily. I'll Take 10".
---------------------------------------------------------------------------------
In real life, I know the limits of how far I can jump. I can tell whether or not I can make the jump, might make the jump, barely make the jump, or not at all. The same would apply to other skills such as Tumble, Craft, Appraise, or whatever.
I do roll some of their skill checks in secret, however, in which case I obviously do not tell them the DC of the check. Skills such as Listen and Spot I roll for them and they can gauge themselves on how tough the DC is. Well, since I roll Hide/Move Silently, it fluctuates so they can't truly gauge it exactly. As it should be. I do, however, let them roll Listen and Spot if they say they're doing it as a Move Action, since it's more of a player choice than a reaction to a situation the DM doesn't want the players to know about.
Spell save DCs and special attacks, yes. A character should be able to gauge the strength of an attack against him. He should be able to tell the difference between making a Will save against charm person at DC 14 or DC 20. They can come to whatever conclusion they want as to how the DC got to where it's at, but they deserve to know the DC.