I’d go even lower. As low as possible so that subdivision handles the bulk of the work for you.
I started with a cube and subdivided it once to give it some instant roundness. I deleted half of it (the top, bottom, and back), keeping only the front and sides. I inserted another edgeloop or two into the sides so that I could define the borders a bit better, but otherwise stuck with this basic 20 polygon shape which made it very easy to work with.
From there there’s hundreds of ways you can approach it. Inset, creases, bevels, etc. Standard Subdivision techniques.
Here I’ve extruded some thickness into the visor, creased the polygroup that made up this thickness, and then added control edges closer to the middle so that it will maintain its sharpness while subdividing.

A bevel can later replace the creased thickness, but for now I’d stick with crease tags as they will let you work with fewer polygons in case you still need to make changes to the shape of the visor.