Is there any real difference? What are some examples, where the phrases are NOT interchangeable?
Both are used idiomatically to mean
Your actions/feelings are understandable or correct.
See, for example, the definition at Oxford Dictionaries.
This generally has the implication that the other person did do something, but that action was not actually blameworthy:
I can't say I blame you or I don't blame you for breaking that vase--it was the ugliest, cheapest thing I've ever seen, and I would have 'accidentally' dropped it, too.
If, however, something truly bad happened, and you want to make clear that you don't hold the person you're talking to responsible, then you would only use the direct I don't blame you:
Of course I don't blame you for the broken vase--the table gave way under it because it was defective, and you had no way of knowing that.
In the latter case, using I can't say I blame you would ring of the idiomatic use, and so would suggest that you don't actually believe the story about the defective table; kind of a verbal wink-wink, nudge-nudge.
Sometimes the two are interchangeable, sometimes not. It depends on context.
Generally speaking "I can't say I blame you" is less direct than "I don't blame you". Saying "I can't say I blame you" might acknowledge a behaviour without taking any stand on whether it is right, wrong, or acceptable. In comparison saying "I don't blame you" suggests some agreement or acceptance.
Any two different phrases are, well different. They always have some difference in the set of their possible connotations.
Whether two phrases are interchangeable depends on (1) the context and (2) just what you mean by "interchangeable", that is, (1) how different their meanings are in that given context, and (2) whether you consider that amount of difference sufficiently significant in that context to decide that they are not interchangeable.
IOW, without (1) a clear understanding of the context of use and (2) a clear definition of what constitutes interchangeableness in that context, the question cannot be answered usefully - it is then just opinion-based.
In general, "I can't say that..." means that you either (1) don't really know for sure that... or, less often, (2) you know it but you don't feel that you can say it.
In addition to the sentiments expressed in the accepted answer, I'd like to add that "I can't say I blame you" can differ from "I don't blame you" in that the latter tends to imply sympathy, e.g. "I'd likely have done the same if I were in your position" while the former merely implies understanding, e.g. "I may not have done the same if I were in your position, but I understand why you did it."
This is because "I can't say I blame you" abbreviates "I'd blame you if I could, but I can't"; it acknowledges that the action being discussed might be questionable and blameworthy, but indicates that the speaker can't assign blame. The reason is idiomatically because the speaker feels it would be hypocritical. It's rarely if ever used in a literal sense (e.g. "There's not enough proof for me to blame you, so I technically can't").
There seems to be a subtle distinction between the phrases which means they are not always interchangeable.
"I don't blame you" can have two meanings. Either "you did it but I do not fault you for it," or "I don't think you did it". In other words, it can mean that you were responsible but justified or that you were not responsible.
I don't blame you for the world financial crisis. You just wanted to buy a house.
I don't blame you for punching Derek. He insulted your mother.
"I can't say that I blame you" seems to be used only to mean the you were responsible but justified, not that you were not responsible. It is often used as a response to a confession.
"Yes, it was I who stole the spoons."
"I can't say that I blame you, after all, they belonged to your mother."
"I can't say I blame you" has a conspiratorial feel to it, maybe hinting that you would be tempted to do likewise despite some disapproval from some people. This phrase excuses rather than forgives, downplaying the fault rather than denying it. It can't be used for something accidental.
Ha! Well, you shouldn't actually have hit him in the meeting, but I can't say I blame you; if he does keep going on and on about eventually someone's going to snap.
On the other hand, "I don't blame you" feels either defiant or conciliatory, depending on the tone of voice. It suggests justification or actual lack of fault.
With an indignant tone, it could be used in similar contexts to "I can't say I blame you," but has a less conspiratorial feel, suggesting that the speaker would be prepared to defend the behaviour to others:
I don't blame you. What he did was completely outrageous. No-one should have to put up with that, and you were right to stick up for yourself.
With a gentler tone, it's more forgiving and can be used to express genuine innocence:
I don't blame you. You couldn't have known it would have that effect.
Summary: "I can't say I blame you" says it wasn't all your fault, whereas "I don't blame you" says it wasn't really your fault.
Thus this doesn't work: "I can't say I blame you; it was a complete accident."
Actually, there is a real difference between them. "I can't say I blame you" is a comment about a choice, whereas "I don't blame you" is a conclusion or judgement about an action.
The difference is that in the second case carries the implication that you are in a position to assign blame, whereas the first, being merely a comment, does not carry that implication, but does imply that the actions were a matter of choice.
For instance, let's say that at a cafeteria, someone bumped into you and made you drop your coffee. If they then explained that they had slipped, you might say "I don't blame you", because it is a situation where you might be expected decide whether they have wronged you. You probably would not say "I can't say I blame you" because agreeing with them in this case would also mean that you accepted that they had bumped you involuntarily no choice in the matter.
On the other hand, if they said that they had bumped you because they saw a wasp, you might say either, both because you had a right to judge it (it impacted you directly), and also because they made a choice which you could choose to comment on.
Finally, if instead of being the person bumped into, you were told this story later on by a friend who saw a spider and bumped into someone else and made them drop their coffee, you might comment "I can't say I blame you" indicating that their reaction seems reasonable to you. However, you probably would not say "I don't blame you", because it implies that you have the right to assign blame, which as a non-participant you normally would not.
They are no different in that they mean the same exact thing.
The difference would arise in the emphasis placed on certain words. For example, emphasizing the word "say" would implicitly mean that there could be some blame present. Alternatively, emphasizing the word "I", in "I don't blame you" is going to have a similar implication; namely that there could be blame from someone else.
In the field of communications, there is a very common phrase used as an example for this. That phrase is
"I didn't say he stole your wallet"
Emphasizing each word will change the implicit meaning of this sentence. For example:
- emphasizing the word wallet could imply that something else was stolen,
- emphasizing the word your could imply that someone else's wallet was stolen,
- emphasizing the word stole could imply that something else was done with the wallet,
- emphasizing the word he could imply that someone else stole the wallet,
- emphasizing the word say could imply another means was used to show the wallet was stolen,
- emphasizing the word didn't directly states that statement wasn't made,
- emphasizing the word I could imply that someone else said he stole your wallet
So really it all depends on emphasis. Giving emphasis to one of these words will make more of a difference than using either "I can't say I" versus "I don't".
"I can't say I blame you" does not sound entirely honest. It can be interpreted as:
I wish I could blame you but it's obvious that I can't.
Saying "I don't blame you" is as direct as it can get.
The difference is implied responsibility. Like "I'm sorry" and "I apologize", the difference is most clearly highlighted if you consider speaking to the parents about their daughter's death, at the funeral.
"I don't blame you."
- reads as "her death may have been unfortunate, but you should not hold yourself responsible for it - there's nothing you could have done."
"I can't say I blame you."
- reads as "her death was bad, and you're clearly responsible and intended it to happen, but there's a moral argument that could defend your actions, most likely that your girl was so awful that any reasonable person would want her dead."
I'm sorry for your loss.
I apologize for your loss.
Small differences in implied responsibility, significantly amplified by the circumstance.