Configuring Emacs to display white on black indeed seems
unpolished. When I started using Emacs, it took some experimentation
and web searching to arrive at:

  • Customize frame-background-mode 'dark
  • Customize inverse-video t (didn't observe this have any effect,
    but it looked relevant)
  • For graphical Emacs: run with -r flag
  • For Emacs in terminal (also configured white on black): run with
    -nw (no -r)

I didn't find a way to drop the -r flag in favor of pure Elisp config,
and still get good display.

I use graphical most of the time so don't generally notice terminal
display issues. Under this setup, the terminal colors are very
different from the graphical, but a brief look didn't uncover any poor
contrast.

In your case, the frame-background-mode variable makes the difference
between minibuffer-prompt face being medium blue or cyan, the latter
having better contrast on black. To confirm the value of that face, do
M-x customize-face RET minibuffer-prompt RET.