window.mainloop() должен быть в основном потоке. Т.е. не нужно его запускать в отдельном.
И указывать метод для
target нужно
без скобок, т.к. ты передаешь ссылку на метод
dow, а если указываешь скобки, то метод сначала выполняется, а потом передается результат его выполнения. А т.к. у тебя там цикл бесконечный, то он бесконечно выполняется (вне потока)
from tkinter import *
import time
from threading import *
DoLoading = False
def dow():
global DoLoading
while DoLoading:
window.title("Загрузка.")
time.sleep(1)
window.title("Загрузка..")
time.sleep(1)
window.title("Загрузка...")
time.sleep(1)
window.title("Загрузка....")
time.sleep(1)
window.title("Готов")
def loading():
global DoLoading
DoLoading = True
Thread(target = dow).start()
def loading_stop():
global DoLoading
DoLoading = False
window = Tk()
window.geometry('600x450')
window.resizable(width=False, height=False)
btn = Button(window, text="Готово", command=loading_stop)
btn.grid(column=1, row=0)
loading()
window.mainloop()