As sourced from reddit https://www.reddit.com/r/bashonubuntuonwindows/comments/1b5mhd9/pyvirtualdisplay_hangs_forever_on_wsl2/?rdt=37413
First update your WSL
wsl --update
wsl --shutdown
Then in your python code set the PYVIRTUALDISPLAY_DISPLAYFD environment variable to 0 prior to attempting to start the virtual display.
import os
os.environ['PYVIRTUALDISPLAY_DISPLAYFD'] = '0'
from pyvirtualdisplay import Display
virtual_display = Display(visible=0)
virtual_display.start()