Reading about the landings in Normandy on June 6th 1944, I am struck by the sheer numbers of Allied casualties taken on one day, which is generally agreed to be roughly ten thousand. This is comparable to a particularly bad day of the battle of the Somme or some other disastrous military operation. I'll admit I am absolutely no authority on tactics, but surely sending thousands of men directly on to a beach with no cover under direct fire from deeply entrenched Axis machine gun positions is not an ideal way to invade from the coast. Was there really no better option than to send masses of infantry on to an open beach? Could the Allies not have made more of an effort towards suppressing all the Axis defences before sending thousands of young men to die?
Allied casualties in Normandy on June 6th 1944 may have been around 10,000, but that number deserves some contextualising. This number is for all types of casualties, and so counts wounded and prisoners of war, not just those killed. It covers the whole day and so includes casualties from the airborne landings, from the follow-on waves, and from engagements fought to expand the beachhead. A not-insignificant number of casualties came from German shelling of the beaches as the follow-on waves landed. Finally, it was only on Omaha Beach that casualties were truly high, roughly 2,500. This was more attributable to good defensive terrain, bad weather and Allied intelligence missing the presence of extra German troops rather than to any failure of tactics. Casualties on Juno were roughly 1,000, as the Canadian 3rd Division faced a number of difficult street-fights through coastal villages shortly after landing. On the other three beaches, caualties were low. Total casualties on Utah Beach may have been ~200, while on Gold and Sword, they were in the region of 500 (but Sword's numbers count casualties taken clearing out the tough 'Hillman' strongpoint inland). These casualties were largely unavoidable. Sometimes, you do just have to throw men at a beach, because all the alternatives are worse. In this answer, I'll run through a number of possible alternatives and explain why they were worse.
The easiest way to minimise casualties during an amphibious assault is simple; land where the enemy isn't. If there's nobody there to shoot at you, then casualties would be minimal. However, this was not practical for the Allies in 1944. The Germans had defensive positions, to a greater or lesser extent along the full length of the coastline of Northern France, Belgium and Holland. Going further afield, to Denmark or into the Bay of Biscay, might have allowed the Allies to evade these defensive positions. However, they were not practical for other reasons. This would greatly increase the range from the UK, reducing the availability of air support and increasing the requirements for merchant shipping. These areas are also tricky from a naval perspective, as they would be hard to clear of German submarines; both areas include German submarine bases. You gain little if you've had next to no casualties in the landing, but lost thousands when their troopships were sunk by a submarine. These factors meant that any amphibious assault on France (outside the Mediterranean) would have to come close to the UK, on the Channel coast. The obvious landing ground, the Pas de Calais, which was closest to the UK, had very heavy German defences. The coast between Calais and and Le Havre had very poor terrain, with cliffs overlooking many of the beaches. Going further west into Brittany would stretch the capabilities of Allied fighters, especially Spitfires. Brittany also had a big problem; as a peninsula, the Germans could easily bottle up the landed force inside of it. Normandy, meanwhile, was close to the UK, had largely unfinished defences, and largely favourable terrain. It was the best choice by far.
So, we have to land in Normandy, how about trying to destroy the defences before landing? The Allies did carry out a naval and air bombardment before the landings on June 6th 1944, but this was intended more to keep the defenders' heads down. The aerial bombings were largely inaccurate, and did little, as was typical for tactical use of strategic airpower. The naval bombardment did succeed in destroying a few bunkers and artillery positions, but again, their main contribution was to suppress the defenders due to their inaccuracy. One way of getting around the accuracy issue would be to extend the length of the bombardment. However, this very obviously telegraphs where the landing is going to take place - the Germans just have to look where the week or month-long barrage has been going on, and move reinforcements there to neutralise the landings. The US was able to carry out long pre-invasion bombardments in the Pacific, against islands that the Japanese could not easily defend. Even with these bombardments, the Japanese were still able to put up heavy resistance, as were the Germans on the Somme in 1916 after a similarly long bombardment. A well dug-in concrete fortification can survive a lot, especially against low-accuracy weapons like naval guns that also fire on a low trajectory. Many of the German defences along the coast were set up with thick concrete or earth walls facing the sea, with embrasures positioned to fire along the beach rather than out to sea. Destroying one of these from the sea would have been impossible, while aircraft bombing was not accurate enough to ensure that every bunker was destroyed in a reasonable timescale. Trying to destroy the defences without guided munitions is hugely impractical.
So, we can't destroy the defences, but what about neutralising them, by landing paratroopers to take them from behind or by using special forces? Paratroopers could be landed pretty much anywhere, a capability that made them hugely useful to Allied planners. They could seize the flanks of the landings, and prevent German troops from elsewhere in France from interfering. They could capture key bridges that the Allied advance would need to cross. They could neutralise gun batteries that might threaten the beachhead or the shipping offshore. However, they could not do all of these key tasks and take the beach defenses. In addition, paratroopers were not well-suited for landings around beaches; if the pilots' navigation was poor, then the paratroopers could easily end up in the sea. This was not easily survivable for men laded down with parachutes and large amounts of gear. In the eyes of the Allied planners, it was much more important to use the paratroopers further inland, as a result of these concerns.
Special forces, meanwhile, were not practical as there weren't enough of them. The Allies needed to land on a very broad front, over 75 km of coastline. This made it harder for the Germans to contain the beachhead, and gave the maximum amount of space for the Allies to deploy troops into, allowing them to take advantage of their numbers advantage. It also made it possible to rapidly capture the key logistical hubs of Caen and Cherbourg. However, the concept of special forces was in its infancy. The Allies had almost nothing that might match modern concepts of special forces in the sense of an elite 'door-kicking' raiding force like Seal Team 6 or Delta Force. The closest equivalent would be the SAS, but this was a small force, not able to make an effect over such a broad front. They did have elite light infantry units in the US Rangers and British Commandos. However, these units had their own tasks - the 2nd and 5th Ranger Regiments attacking Pointe du Hoc, the 1st Special Service Brigade landing on Sword to reinforce the 1st Airborne inland, and the 4th Special Service Brigade landing on Sword, Juno and Gold to link up between the three beaches. They were also, as light infantry, poorly suited to attacking defences without support. On D-Day, 48 Royal Marine Commando landed at Langrune sur Mer on Juno Beach, reaching the beach before the infantry and armour that were supposed to have secured it. In taking the beach, they suffered heavy casualties, up to 50%. In other words, trying to take the beach with special forces might have ended up with them suffering higher casualties than happened historically.
How about landing at night? Night amphibious landings promise the ability to take the enemy by surprise. However, interwar exercises had shown that this was a false hope. Observers from the shore were able to notice the landing craft surprisingly far from the beach. A night landing also greatly complicates navigation; at the time, this largely relied on observations of landmarks ashore, which were invisible at night. Night landings in the Mediterranean had low casualties, but a lot of confusion due to poor navigation. It also made it much harder for ships and aircraft to bombard the defences. If the assault bogged down, it would be difficult for the troops to receive the fire support they needed to break through the defences. The Allies chose to go for a day-time landing to maximise the amount of offshore and airborne fire support that could be provided to the landing.
I just wanted to add one point regarding the Somme comparison.
The number of Allied D-Day casualties is estimated at 10,000, but as u/thefourthmaninaboat points out this includes killed, wounded, and missing.
The (U.S.) National D-Day Memorial commissioned a project to identify by name all Allied personnel killed in all dimensions of the D-Day invasion on June 6, 1944. Most of the research was done by Carolyn Tuckwiller. This resulted in 4,414 names, which represented a significant deviation upward from prior estimate of around 2,500 and may suggest that the number of casualties is higher than 10,000, since it's unusual for 44 percent of casualties to be killed.
All that said, the First Day of the Somme was much, much costlier! British (including Imperial) casualties have been tabulated at 57,740 wounded of whom 19,240 were killed.