The only issue with viewstate is abusing the use of it. This easily happens as the default is to have it all on. You can't even turn it all off by default on a page, and selectively turn on specific controls (they will add support for this on the 4.0). You will see few code with the viewstate=false on it, and with lists of info it can get big fast.
There are even some third party controls that abuse it awfully. I had to help finding out why a page was awfully slow (as in it doesn't even works), and it turned out the amount of info downloaded was huge, the cause was the viewstate was 10+ times the size of the content (really) and it was a third party control that liked storing everything you handed to it (which got really ugly because it was handed a hierarchy of objects).
So the real problem isn't the viewstate, it is its size. If you already have the problem of big viewstates (normal big, not the extreme of the above), then moving it to session on the server means you will be storing a huge amount of info. This is moving the problem from one place to other, perhaps mitigating some of its effects, but it doesn't address the real issue, storing too much unneeded state (because either the developers did or some third party stuff misbehaved).
That said, I don't think I would call it the single main problem with the regular asp.net approach. Don't take this as a "don't develop with it", but more like a "if you will develop on it, get to know it really well". I work a lot with regular asp.net, it Can work and very well. If I were to begin on it at this point, I think I would go with asp.net mvc though, as I think regular asp.net needs a whole lot more from the developer to get it right.