I have a similar machine but with HDD not SSD and my speed for processing nodes is up to 12x faster than yours. Therefore, from your specs, I suspect that your configurations of both Postgres and osm2pgsql are not optimal. I have done large areas such as the whole of Europe a few times and well know how different settings on the same machine can massively alter performance!
Firstly, read about optimization for import. Note that the settings suggested here are for importing osm and not for general running of PostGIS (i.e. once you have finished your import, you may want to turn autovacuum back on etc). Some of the settings suggested in the 'NOObs' section actually make very little difference if you read the preceding tables, so configuring Postgresql for spatial (e.g. see here).
Once you have postgis optimised, for a big import shut everything else down and clear your buffers/cache etc. to free memory (or just reboot if you can). Now for the osm2pgsql settings. The first link will give you some of the settings and you can see a very handy reference and discussion here for all the osm2pgsql flags. If you have 'normal' HDD drives use flat-nodes and parallelization. This will give you the biggest speed boost along with getting postgis optimised correctly. Using SSD, it seems to help but less dramatically (though you ought to have much better speed than me because of that anyway). The osm2pgsql cache setting is (I believe) per process so if you have four processes and set -C to 8000 that is a cache of 32GB which is twice your RAM. If you have 8 cores, I'd suggest a setting of 6 processes with -C 2500 (= total of 15GB), which leaves 1GB for the operating system and other sundry tasks.
Lastly, I note that you are using the bzipped osm xml file. The bench-marking alluded to earlier states that:
the 'pbf' input reader reads OSM PBF files about twice as fast as the
'libxml2' parser parses an equivalent OSM XML file
It also states:
the experimental 'primitive' XML parser reads OSM XML input about 30%
faster than the default 'libxml2' reader (but seams it currently as a
bug in supporting some xml entities such as ' )
If the bug has been fixed then, use the reader flag in osm2pgsql to set it to primitive, but I always use PBF and not BZ.
See here for osm2pgsql for some bench-marking, now a little dated but valuable nonetheless as the various settings for postgres and osm2pgsql are listed for a variety of machines, with the times. Lastly don't panic if you have got a good speed out of the nodes and see the ways crawling along. In my experience, the k/s reading for ways slowly increases, but expect it to be at least an order of magnitude or more less than the speed for processing Nodes