Почему не работает?
Условия проверки неправильно поставлены
if time_month == 9 or 10 or 11: можно сказать проверяет значение bool каждого элемента на соответствие True.
Т.е. это можно записать как:
if bool(time_month == 9) or bool(10) or bool(11):
А так как число, если оно не равняется 0, имеет значение bool автоматически True, имеем:
if bool(time_month == 9) or True or True:
Т.е., каждое из 4рёх общих условий выполняется всегда и в цикле

Лучше уже записывать так
if time_month in [9, 10, 11]:

Update: мне на мысль сошла идея запихнуть весь код выше в однострочный код. И что  же я скажу.. мне это удалось) Для питонистов код ниже прочитать наверное адом будет.
import datetime
import time
import ctypes

while True: [[[[[[[ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0) if time_now >= 17 or time_now <= 7 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 12 <= time_now <= 13 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 8 <= time_now <= 9 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 14 <= time_now <= 16 else []] if time_month in [1,2,12] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 21 or time_now <= 5 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 12 <= time_now <= 17 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 6 <= time_now <= 12 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 18 <= time_now <= 20 else []] if time_month in [3, 4, 5] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 21 or time_now <= 4 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 13 <= time_now <= 17 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 5 <= time_now <= 12 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 18 <= time_now <= 20 else []] if time_month in [6, 7, 8] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 17 or time_now <= 6 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 11 <= time_now <= 13 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 7 <= time_now <= 10 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 14 <= time_now <= 16 else []] if time_month in [9, 10, 11] else [], time.sleep(1800)] for time_month in [datetime.datetime.now().month]] for time_now in [datetime.datetime.now().hour]] for wallpaper in [{'night': wallpaper_place+'night.jpg', 'obed': wallpaper_place+'obed.jpg', 'morning': wallpaper_place+'morning.jpg', 'evening': wallpaper_place+'late_evening.jpg'}]]] for wallpaper_place in ['C:\\Users\\andriy\\Desktop\\wallpaper\\']]
у тебя как минимум не работают эти условия:
if  21 <= time_now <= 5:

if  17 <= time_now <= 6:

и т.д.

А это вообще бред:

if time_month == 12 or 1 or 2: