Programming a AVR in TQFP package
What could be the problem here. 


Some of the possible problems include:



  I place the IC on top of the pads [...] I am sure this is making a valid electrical connection.


I respectfully disagree that you can be sure every (necessary) pin is making a good-enough electrical connection, with the ATmega328P TQFP package just "laying" on top of the breakout PCB.

In the past I have seen a junior engineer try the same "trick" (different MCU) and again, they failed to program it - but all worked OK once it was correctly soldered.


  I cannot solder it due to some constraints


So fix your constraints (whatever they are) which are preventing you from doing that soldering. For example, if your constraint is lack of suitable soldering equipment, then try to borrow the equipment, or ask someone else who has the equipment to do the soldering for you, or use the DIP version of the ATmega328P etc.

Until the ATmega328P IC is correctly soldered to the breakout PCB, you are probably wasting your time.
That one picture of your breadboard, from an angle, and not including the full paths of all the jumper wires, makes it impossible for anyone reading your question to independently verify that the wiring is correct. You might have a problem there, which we cannot tell you about, since we cannot see all the jumper wiring.
From the amount of breakout PCB pin length which is visible above the breadboard (e.g. see the photo where IC pin 32 plugs into the breadboard), you either have long pins soldered to that PCB or the breakout PCB might not be fully inserted into the breadboard.
Looking at the soldering of the pins onto the top of the breakout PCB, they are a concern as several of them are "balls" of solder around the pin, instead of the solder flowing onto the PCB. This suggests the solder may not have made a good connection to the track on the breakout PCB, and again, that could cause problems for you.

To illustrate the above two concerns, I have used part of your photo and highlighted them:

 


Since your error message is the most general one (i.e. the PC software cannot detect the ATmega328P via the USBasp programmer) then your problem can also be almost anywhere else, in addition to the list I have given above e.g. internal damage to the breadboard contacts causing poor or nil contact, due to a previous excessively large pin being inserted; or the ATmeag328P might be fake; or your USBasp programmer is faulty; etc.

However, I suggest starting with the simple issues listed above first.