Typically, an unmanaged switch wouldn't send BPDU's, since it won't support spanning-tree. So you can only see your own BPDU's coming back to you on another port then. If you're running spanning-tree, you can use a BPDU guard on Cisco to stop the loop by shutting down the interface:
interface GigabitEthernet0/1
spanning-tree bpduguard enable
On Juniper:
set rstp bpdu-block-on-edge interface ge-0/0/0.0 edge
Another way to monitor and prevent them is by implementing storm control, which can help you to detect and stop broadcast, multicast and unknown unicast floods.
Both Cisco and Juniper support this. On Cisco, you can use:
interface GigabitEthernet0/1
storm-control broadcast level 0.01
The level here indicates the percentage of the total interface bandwidth which can be used for broadcast/multicast/unknown unicast traffic. You can then set an action on what happens when this level is exceeded:
storm-control action shutdown
To shut the port. Or,
storm-control action trap
To send a SNMP trap (see below for more about this).
On Juniper you can use:
set ethernet-switching-options storm-control action-shutdown
On Juniper, the command is:
set ethernet-switching-options storm-control interface xe-0/0/0 bandwidth 1000
The rate is in Kbps.
If you want to be more proactive, you can consider configuring SNMP traps for spanning-tree and storm control events. Your switches can then send trap messages to a central SNMP trap server when a loop occurs.This SNMP trap server can then send you an alert (via mail, SMS, IRC, or whatever you have in place).
On Cisco you can configure SNMP traps like this:
snmp-server enable traps port-security
On Juniper:
set snmp trap-group GROUPNAME link