I also (soft) bricked mine when upgrading from stretch to buster, probably because /boot was only ~65MB. Later I figured out that /boot only contained 3 files after the failed upgrade, so I couldn't boot anymore. Here's what one can do in situations like these:
- resize partitions with gparted (or whatever tool you prefer); I shrinked the ext4 root partition by 200MB at its beginning, so that I could enlarge the fat /boot partition by 200 MB
- mount sd card's /boot on /mnt/sd
- download the latest raspbian image
- check the contents of the image: fdisk -l *.img
- mount the image's boot partition with the offset that fdisk just told you: sudo mount -o loop,offset=$((8192*512)) *img /mnt/image
- copy all files from the image to the sd card: sudo cp -a /mnt/image/* /mnt/sd/
- edit /mnt/sd/cmdline.txt, you need to fix "root=..." with something that works, e.g. "root=/dev/mmcblk0p2"
Finished. Now umount everything and try booting. If there's no video signal and green/red LEDs are on, but don't flash, the kernel isn't found, so you still have a problem with /boot. If the video signal is there, but you only see 3 or 4 images of raspberries, then the kernel is being loaded, but "root=..." is wrong and you need to fix cmdline.txt.