Data Transfer without Transceiver on FPGA
A transciever can have dedicated high speed I/Os and also dedicated MAC layers for specific interfaces. These will make your design simpler since you can directly hook-up the MAC layers for performing all the interface related tasks. If you don't use the transceiver, you may have to use soft MAC blocks (which may be present as add-on blocks in the dev environment or you may have to code the logic for these blocks) and/or other I/O pins of the FPGA.

The speed of transmission depends on different factors. The first factor would be the availability of pins that meets the timing requirements for the interface that you are designing the transceiver. In the case of high speed interfaces (PCIe, HDMI), you should have pins that are capable of handling the required switching speeds which can be connected to your custom blocks.

The second factor would be the maximum clock frequency supported by FPGA logic. For e.g. there might be dedicated hardware transceiver blocks inside the FPGA that work at a much higher clock frequency than the max FPGA logic clock frequency. In that case, your custom transceiver block cannot operate at those frequencies.

The third would be unescessary area utilisation taken up by your custom logic, which will increase the percentage of logic utilisation which may cause timing issues at higher frequencies.