As you have seen there are two issues with the question. I apologise for missing the "so" issue in the first place.
As Barb said, using the first "so" makes the second one inappropriate. Remove or change the first, and the second is fine.
It is so cold that I need to buy a coat.
It is so cold that I am going to have to buy a coat.
It is cold so I need to buy a coat.
It is very cold so I need to buy a coat.
It is extremely cold so I need to buy a better coat.
That's the "so" dealt with. Now, onto the question. Let's remove the second "so" from the original question, because it's not really important to the original problem.
It _____ so cold these days, that I will buy a coat.
A) is B) has been
The phrase "these days" (to me, at least) means now. It may include the preceding day, days, month or when talking longer term, years, but it certainly includes "today" and suggests a likelihood of the situation remaining the same probably in the short-term. As far as I am concerned, "is" is the only word which fits.
It is so cold these days, that I will buy a coat.
If I were to start the sentence with "It has been so cold ..." I would follow it with something other than "these days", something which suggests the past.
It has been so cold these last few days ...
It has been so cold recently ...
It has been so cold lately ...
I would also, though, end the sentence differently in that case:
It has been so cold these last few days that I had to go and buy a coat yesterday.
It has been so cold recently that I realised my coat isn't warm enough. I'll have to buy a new one.
For me, "It has been so cold ... I will buy a new coat" just sounds unnatural. I would follow "It has been so cold" with another verb in a past tense.