Hola Luis si se puede solucionar, pensemos primero que todo porque siempre pasa? y es que si recorremos linea a linea las que no esten en un condicional siempre se ejecutaran, por eso aparece dos veces porque se ejecutara tanto en tu linea 11 como linea 16.
Ahora pensemos en tu segundo problema, como hacer un condicional que detecte que no ha completado los campos? que devuelve el programa cuando en un prompt yo simplemente oprimo enter? la respuesta es: "", lo que quiere decir un string o cadena de texto vacía o nulo si lo quieres ver mas técnico.
Entonces cogiendo las dos anteriores premisa lo que hice fue dejar primero la parte de los prompt de nombre y edad afuera del condicional porque quiero que siempre se ejecuten y en el condicional reviso que si alguna las variables que recolecte de los prompts están vacías para mostrar un alert de error o de no ser así sigo con la secuencia de código que tenias
alert("¡Bienvenida y bienvenido a nuestro sitio web!");
let nombre = "Luna";
let edad = 25;
let numeroDeVentas = 50;
let saldoDisponible = 1000;
let mensajeDeError = "¡Error! Completa todos los campos";
let nombreUsuario = prompt("Digite Su nombre:");
let edadUsuario = prompt("Digite su edad:");
if ((nombreUsuario == "") || (edadUsuario == "") ){
alert(mensajeDeError);
}else{
console.log(nombreUsuario);
console.log(edadUsuario);
if(edadUsuario >=18){
alert("¡Puedes obtener la licencia de conducir!");
}
}
Espero que haya sido de ayuda, cualquier cosa me avisas.