你的理解有误。
I have been writing a letter for 2 hours. 这个句子表示你一直在写一封信,到说话时已经写了二个小时了。信可能刚刚写完,也可能还没有写完,还会继续写下去。这是现在完成进行时无关。现在完成进行时只告诉听话人写信的动作从过去持续到了说话时,持续时间为二个小时。
I have been writing for 2 hours. 这个write为非终结动词,用这个时态还是表示从过去到说话时主语一直在写东西,写了二个小时。至于在说话时刚刚停止写,还是要继续写下去,这个时态本身是无法告诉你的。你只能根据语境做判断。
I am writing for 2 hours. 这是错误的句子。现在进行时表示说话时写的动作在持续,排斥持续时间状语。这也不是进行体表示将来,进行体表示将来需要将来时间状语表示出这个将来时间。