Это должно быть довольно просто. Когда вы работаете с изображениями в tkinter, вам всегда нужно указывать ссылку на это изображение в виджете, на котором вы его использовали. Другими словами, сделайте что-то вроде этого:
from tkinter import Tk,Label,PhotoImage
root = Tk()
img = PhotoImage(file='background.png')
small_img=img.subsample(2, 2)
background_label = Label(root, image=small_img)
background_label.img=img
background_label.place(x=0, y=0, relheight=1, relwidth=1)
root.mainloop()
Особенно, когда вы создаете Метку, содержащую изображение в области функций или что-то подобное, важно установить эту ссылку, так как переменная для этого экземпляра Labels исчезнет после вызов функции завершается.
PS: Для большей ясности в отношении основных виджетов и небольших улучшений производительности всегда назначайте виджету главный виджет при его инициализации. Я знаю, что tkinter также автоматически назначает последний созданный экземпляр Tk как самого мастера, но а) требует ли это ненужных вычислительных мощностей и б) легче отслеживать, какой виджет является потомком другого, и так далее. ;)