To do (a), I think it's pretty simple... lower prices when possible, market better, give people more flexibility in buying family plans, mini-season tix, etc.
To do (b), there should be more games scheduled when fans from other parts of the state can reasonably get to them. I live in Richmond and it's around 8 hrs round trip for me to see a 2 hr VT basketball game. That means weeknight games, or games on Sunday night, are pretty much out of the question. Of this year's 16 game home schedule, a grand total of 4 occurred on Saturday during the day. Of those 4, 2 were against really boring non-league opponents (ETSU and Campbell) and 1 was against one of the worst ACC teams (GT). Blacksburg area fans, ask yourself, would you be willing to drive round trip to Norfolk, or Richmond, or DC, to watch VT play ETSU? I think not.
I understand that the ACC (and TV) dictates the game time of our league contests. But VT could do a better job of bringing in non-league opponents people might want to see, at times that are more convenient. If you're going to play Norfolk St and BYU, why not play those games on a Sat afternoon? Neither was televised. If you're going to play the likes of ETSU and Campbell, why not play JMU, VMI, or Liberty instead? Or for that matter, go home and home with VCU/UR/ODU instead of BYU or Okie St?
It's definitely true that today's fans have more entertainment options and less disposable income as compared to a decade ago, but it's also true that VT makes it costlier and more difficult to see quality home games.