So the functional distinction between hardware and software is actually a lot less than you might think. Most - if not all - switching and routing functions are first specified, implemented and debugged in software implementations long before they're adapted to run on a piece of dedicated silicon. This is, of course, because the process of changing, fixing and debugging software is cheap and easy while doing the same in hardware for dedicated ASIC can literally cost many, many millions of dollars and take months/years to accomplish.
As an example - it's absolutely possible to take a standard PC running a fairly standard OS (Linux is the most common nowadays but hardly the only one capable) with a bunch of NIC's and run software to bridge and route packets. You can use a bunch of crossover cables to hook up end stations and then connect an additional port to an ISP, turn up NAT and - surprise - you have a complete LAN and WAN solution without having purchased a single piece of dedicated hardware. Heck, throw in a wireless interface or two and have it run as an AP to hook up wireless clients. Turn up firewalls, QoS, VOIP, etc. Seriously - just about anything function you can turn up on a dedicated piece of network hardware can run on a general purpose PC running a mostly stock operating system. Heck, arguably there are things you can do on these platforms that would be tough to achieve on dedicated hardware!
Here's the thing, though - the solution I just described above is going to be orders of magnitude slower and generally substantially more expensive (on a unit basis) than dedicated hardware. It's also going to lack a ton of supportability. Ethernet switches are cheap and fast and if you're trying to solve the problem of physically connecting machines then they're superior in almost every way.
Things start to get muddier when you move to situations where density and performance requirements aren't as stringent. An example of this would be the use of virtual firewalls, load balancers and routers in a virtualized/cloud environment. Increasingly the major vendors are making their products available as software-only offerings. As an example a Cisco CSR (same IOS-XE software as the hardware-based ASR1000) can be spun up quickly in a cloud environment (AWS, GCE or local virtualization) to provide VPN termination, full routing integration and the like. It's literally an order of magnitude slower than the hardware ASR but that still means it can move gigabits of traffic - which, honestly, is more than sufficient for its intended use-cases.
Remember that the concept in these environments is to scale out rather than scaling up - so deploying 5-10 slower virtual instances in parallel is more useful than buying a huge piece of dedicated hardware. The key here is to retain all the function and enough performance while gaining the capability to quickly spin new virtual devices up- and down- as needed while still retaining full commercial support. This is the way in which a lot of folks want to consume the offerings of the big networking vendors and, as such, it's increasingly an option these vendors are providing.
Now - as to VMS? It's basically reiterating the above - taking the services you'd traditionally get out of purchased pieces of hardware (specifically including aggregation routers, firewalls, load balancers, IDS, etc) and running it as a service. Behind the scenes it may be some combination of hardware and software but to the end consumer it's a pre-integrated, well-managed solution that can be bought as a subscription. The customer might still want to buy dedicated hardware at the edge of the network but, again, it's at least technically possible to accomplish a full end-to-end network using virtual routers running as clients on a hypervisor.