Software Reset WITH Bootloader

What exactly are you envisioning? Obviously you don't want to upload sketches via the arduino IDE, since it already performs a reset to enter the bootloader. You do want to upload sketches wirelessly or something?
If you do, let me know, i've done exactly that (Bluetooth).

Entering the bootloader using a watchdog timeout is easy, include the wdt.h file on the top of your sketch

 #include <avr/wdt.h>

then you can use something like this to enter the bootloader on recieving a specific character.

if(Serial.available())       
  {
    char = Serial.read();   
    
    if( char== '#' )               
    {
         wdt_enable(WDTO_30MS);
         while(1) {};
    }
}